PDA

Просмотр полной версии : Проблема с дубликейт


Ivanochek
28.05.2003, 14:11
Значит такая вот проблем: делаю море и на неем должны быть блики, естественно нашел скрипт, который бы эти блики множил менял в размере и двигал, но вот не задача он жрет сто процентов ресурсов процесора, не подскажете как ето можно сделать чтоб проц так не тормазил???

Dimonius
28.05.2003, 14:20
написать самому и с умом

а вообще надо посмотреть его что-бы, что-то конкретное сказать. Может быть дублирующиеся клипы также сильно громозкие по ресурсам, тогда и их надо упростить. А может комп сильно слабоват - тогда ничего уже не поделаешь:)

Ivanochek
28.05.2003, 14:29
да я дизайнер а на меня повесили флеш, и frity скрипт я знаю по стольку по скольку, пробавал разобраться не получаеться...

сам мувик предстовляет из себя круг с градиентной заливкой от белого к прозрачному, и потом сам мувик приплюснут и нет в нем не какой анимации...

на счет компа: pentium III 1.00 GHz, оперативка 384 ;)

Dimonius
28.05.2003, 14:52
ну тогда давай скрипт посмотрим, может что-нить обнаружим, вообще-то я тоже дизайнер.
ну может и профи-програмеры подключатся.

Ivanochek
28.05.2003, 17:04
это на мувике:

onClipEvent (load) {
d = 200;
_x = Math.random()*1300;
_y = Math.random()*10-(_height/2);
speed = Math.random()*-4-1;
_xscale = 100+Math.random()*d;
_yscale = 100+Math.random()*d;
_alpha = Math.random()*30+10;
}
onClipEvent (enterFrame) {
_x += speed;
if (_x<=-200) {
_xscale = 100+Math.random()*d;
_yscale = 100+Math.random()*d;
_y = Math.random()*10-(_height/2);
speed = Math.random()*-4-1;
_x = 1300;
_alpha = Math.random()*30+10;
}
}



это на кадре:

objects = 45;
loop = 1;
while (loop<=objects) {
duplicateMovieClip("bar", "bar" add loop, loop);
loop = loop+1;
}

Techmaker
28.05.2003, 17:31
ну незнаю тут вроде тоько одна ошибочка - это создание лупа... :) (красным цветом выделил) - мув должен двигатся в другую сторону...

это на мувике:

onClipEvent (load) {
d = 200;
_x = Math.random()*1300;
_y = Math.random()*10-(_height/2);
speed = Math.random()*-4-1;
_xscale = 100+Math.random()*d;
_yscale = 100+Math.random()*d;
_alpha = Math.random()*30+10;
}
onClipEvent (enterFrame) {
_x -= speed;
if (_x<=-200) {
_xscale = 100+Math.random()*d;
_yscale = 100+Math.random()*d;
_y = Math.random()*10-(_height/2);
speed = Math.random()*-4-1;
_x = 1300;
_alpha = Math.random()*30+10;
}
}



это на кадре:
но я бы укоротил немного... вот так:

for(i=1;i<=45;i++){bar.duplicateMovieClip("bar"+i,i)}

ещё проверь имя мувика... :)

dee2
28.05.2003, 17:46
1. Нужно отключить антиалиасинг у дублирующего клипа

onClipEvent (load) {
this._highquality = 0;
...
...

2. Если волн не 45, а 30 к примеру - то море получается не менее красивое, только волнение не 4 а 3 балла :)

objects = 30;

Techmaker
28.05.2003, 17:49
упс... :) у тебя же скорость отрицательная..... а я и незаметил...
всё у тебя правилно было...

Dimonius
28.05.2003, 17:51
говорят, что цикл for работает быстрее while, поэтому предлагаю в кадре написать:

for (i=1;i<=45;i++){
duplicateMovieClip("bar", "bar"+i, i);
}
но это я боюсь особо не поможет

у тебя много вычислений связанных со свойствами клипов, прежде всего альфа(это дело очень жрет ресурсы процессора), а если учесть что их судя по коду 46 (т.е. 12 раз в секунду, если у тебя такая скорость кадров, флэш пересчитывает все это заново, вдобавок присутствует градиент в заливке да и надо учитывать что в сцене помимо волн еще что-то находится - соответственно единственный возможный выход - это сократить число клонов, или не вычислять альфу, что конечно скажется на полноте замысла, однако я думаю здесь надо понимать, что DOOM3 вряд ли пошел бы на PC486.

Ivanochek
28.05.2003, 18:33
dee2 TCKB Я НЕ ОШИБАЮСЬ ЭТО ГЛОБАЛЬНАЯ ФУНКЦИЯ ТО ЕСТЬ ОНА НА ВЕСЬ КЛИП РАПРОСТРАНЯЕТЬСЯ ИЛИ Я ОШИБАЮСЬ??? :)

Dimonius У МЕНЯ ДАЖЕ 30 КАДРОВ СТОИТ :(