Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Эффект   Найти похожие ветки 

 
Builder   (2004-01-26 23:52) [0]

Уважаемые мастера,
я встречал пару раз на сайтах такой эффект - по экрану всякие там снежинки летают, и проч. причем поверх окна.
Ну я понимаю что там все в jave, а хотелось бы в Дельфи как - нибудь сделать, пробовал как фон *.avi вставлять - получилось не то. Вообщето я так понимаю что нужно как - то резидент делать или что?


 
Brahman ©   (2004-01-27 09:55) [1]

Сначала разберись, что нужно: окно твоей программы, окно Windows (Desktop), да и про "резиденты" забудь:)


 
Builder   (2004-01-27 10:43) [2]

Нужно окно программы, а резидент, не значит assembler"овский
вирус, а просто путь к решению.
Есть множество прикольных приложений - котята там бегают, или шарики летают, вот мне интересно как этоо делается


 
_none_ ©   (2004-01-27 11:16) [3]

to [Builder] создается окошко, на которое вырезается по форме с помощью регионов


 
_none_ ©   (2004-01-27 11:17) [4]

to [Builder] а снежинки на сайте - обычный динамик хтмл


 
DENNIS ©   (2004-01-27 11:54) [5]

_non_ прав - Обычнай HTML c JavaScript. Если тебе нужно могу дать. Делал как-то давно для своей "HOME". А что касается дельфы, то была прога "Snow". Падал снег на окна, панель  пуска. Если для каждой снежинки делать отдельное окно, то какими силами???


 
Brahman ©   (2004-01-27 13:09) [6]

Вот, кстати и путь к решению минимальными силами.
TWebBrowser + DHTML


 
Mihey ©   (2004-01-27 22:20) [7]

>_non_ прав - Обычнай HTML c JavaScript. Если тебе нужно могу дать.

Очень интересно, как ты обратишься к объекту, если у тебя обычный HTML. Уж если точно, то плюс ко всему этому ещё и DHTML обязательно нужен, с его слоями или хотя бы идентифицированием элементов.

>Если для каждой снежинки делать отдельное окно, то какими силами???

Угу, наделать тысячу форм (в Design Time), присвоить им белый цвет и изменять Top и Left. А ещё лучше TImage растянуть на весь экран - всё равно больше не видно.

2 Builder:

Делается это либо через рисовнаие на десктопе, либо через оверлеи, используя DirectX, а всякиз котят можно делать, например, через окна с регионами.


 
DENNIS ©   (2004-01-27 23:42) [8]

Mihey> Ха-ха. Вот только все подряд теперь будем растягивать!

HTML лежит в нете, не надо к нему обращаться. Его вызыват, например, IE. В нем с помощью JS можно менять свойства объектов (в том числе left и top для картинки, но там еще есть ньюансы). Не обязательно DHTML.
Delphi там не при делах.

P.S.
Любишь ты двойки ставить. Лучше объясни человеку как, если знаешь.


 
Mantic0re   (2004-01-28 11:03) [9]

А я бы просто спрайты рисовал на GetWindowDC(MainWinHnd)...
И просто и быстро и без гимора..
Какие там нафиг DHTML..


 
Manticore   (2004-01-28 11:05) [10]

Ну конечно в отдельном потоке,
и каждая снежинка - объект (а можно и не так 8) )


 
Mihey ©   (2004-01-28 20:06) [11]

2 DENNIS:

>HTML лежит в нете, не надо к нему обращаться. Его вызыват, например, IE. В нем с помощью JS можно менять свойства объектов (в том числе left и top для картинки, но там еще есть ньюансы). Не обязательно DHTML. Delphi там не при делах.

Слушай, а ты что-нибудь хорошо знаешь? Вот сделал ты на HTML цветную надпись, например "<font color="#00FF00">Delphi!!!</font>". Вот как ты на JavaScript изменишь цвет этой надписи????? Да никак, потому что в коде ты не сможешь указать, цвет какой именно надписи надо менять! Чистый HTML не индексирует элементы!!!!!

Решение. Вместо этого пишем: "<font id="Sign1" color="#00FF00">Delphi!!!</font>". И вот уже по этому id мы можем обращаться к этой надписи. Так вот этот id - это элемент DHTML. DHTML - это Dynamic HTML, т.е. ДИНАМИЧЕСКИЙ. А просто HTML - статичен. Ты понимаешь разницу?

Блин, чесное слово, если не знаешь, то не вводи остальных в заблуждение. Почему то пока ещё DHTML не был введён, такие снежинки в Интернете не появлялись. По твоему, раньше люди были глупее???


 
Mihey ©   (2004-01-28 20:08) [12]

2 Mantic0re:

Рисовать на десктопе можно, но тогда вновь появляющиеся окна будут затирать нарисованное.


 
DENNIS ©   (2004-01-28 22:00) [13]

Mihey>>

<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>
#Sn1 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn2 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn3 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn4 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn5 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn6 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
#Sn7 {
 width: 17px; height: 14px; left: 0px; top: 0px; position: absolute; overflow: auto;
}
</style>
<script language="JavaScript">
<!-- //hide script KDI!
miny=300;
d=document;
function beg() {
d.all.Sn1.style.posLeft=100;
d.all.Sn1.style.posTop=150;
d.all.Sn2.style.posLeft=200;
d.all.Sn2.style.posTop=220;
d.all.Sn3.style.posLeft=300;
d.all.Sn3.style.posTop=100;
d.all.Sn4.style.posLeft=400;
d.all.Sn4.style.posTop=300;
d.all.Sn5.style.posLeft=500;
d.all.Sn5.style.posTop=50;
d.all.Sn6.style.posLeft=600;
d.all.Sn6.style.posTop=300;
d.all.Sn7.style.posLeft=700;
d.all.Sn7.style.posTop=150;
}
function fly() {
x=d.all.Sn1.style.posLeft;
y=d.all.Sn1.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn1.style.posLeft=x;
d.all.Sn1.style.posTop=y;
x=d.all.Sn2.style.posLeft;
y=d.all.Sn2.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn2.style.posLeft=x;
d.all.Sn2.style.posTop=y;
x=d.all.Sn3.style.posLeft;
y=d.all.Sn3.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn3.style.posLeft=x;
d.all.Sn3.style.posTop=y;
x=d.all.Sn4.style.posLeft;
y=d.all.Sn4.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn4.style.posLeft=x;
d.all.Sn4.style.posTop=y;
x=d.all.Sn5.style.posLeft;
y=d.all.Sn5.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn5.style.posLeft=x;
d.all.Sn5.style.posTop=y;
x=d.all.Sn6.style.posLeft;
y=d.all.Sn6.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn6.style.posLeft=x;
d.all.Sn6.style.posTop=y;
x=d.all.Sn7.style.posLeft;
y=d.all.Sn7.style.posTop;
dx=Math.round(Math.random()*2)-1;
dy=Math.round(Math.random()*5);
x=x+dx;
y=y+dy;
if (y>miny) {y=-20};
d.all.Sn7.style.posLeft=x;
d.all.Sn7.style.posTop=y;
setTimeout("fly()", 100);
}
// -->
</script>
.....
<body>
<script language="JavaScript">
<!-- //hide script KDI!
for (i=1;i<8;i++) {
d.write("<span id=Sn"+i+"><img src="images/sn1.gif"></span>");
}
// -->
</script>
</body>
</html>


 
DENNIS ©   (2004-01-28 22:01) [14]

html+JS+Style.


 
Mihey ©   (2004-01-28 23:29) [15]

d.write("<span id=Sn"+i+"><img src="images/sn1.gif"></span>");

А это что?


 
Mantic0re   (2004-01-29 12:11) [16]

2Mihey:

Ну и что, что будут затирать, а ты наверх рисуй (таймер..)


 
Mihey ©   (2004-01-29 17:38) [17]

2 Mantic0re:

>Ну и что, что будут затирать, а ты наверх рисуй (таймер..)

А вот это зря. Если рисовать по таймеру, то останутся моменты, когда окно показалось, но таймер ещё не сработал. К тому же, десктоп - не такой объект, на котором быстро рисуется.

Наверное, лучше всего идити через регионы. Я недавно вытащил из копмонента FormRgn процедуру создания региона по изображению и переписал её под Graphic32 - получилось очень быстро.


 
Mantic0re   (2004-01-30 10:09) [18]

Ну и что?

Смотрится все нормально.
И почему только десктоп - ведь разговор был о собственном окне.

Можно и через регионы, но все равно - медленно,
спрайты быстрее :)


 
Mihey ©   (2004-01-30 20:28) [19]

2 Mantic0re:

Э-э... А как добъёшься прозрачности окна? Рисуя подложку? Тогда работать на компе будет невозможно. Ладно, пофиг. Всё равно мы склоняемся к тому, что надо самому рисовать, а не пытаться .avi загружать - это же так смешно. Avi размером с экран даст такую тормозню....



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.024 c
1-1082001109
gweep
2004-04-15 07:51
2004.05.02
Explorer и Delphi


1-1081763789
Hyboid
2004-04-12 13:56
2004.05.02
Привязка сообщений


9-1068921719
Barlok
2003-11-15 21:41
2004.05.02
Выбор текстуры bmp или jpeg ?


3-1080988684
race1
2004-04-03 14:38
2004.05.02
integer overflow в гриде


8-1075581536
dementiy04
2004-01-31 23:38
2004.05.02
ACDSee своими руками