PDA

Просмотр полной версии : Анимация начинает тормозить.


Koks
15.08.2006, 15:12
Сделал на флеш модель шкафа купе. При нажатии на двери, они сдвигаются в сторону, при наведении мышки на ящик он выдвигается, а когда мышку с ящика убираешь он закрывается. Вроде код простой, но если пробовать навести мышку на ящик во время движения двери, и проделать это несколько раз, то ящик начинает страшно тормозить. Не могу понять в чем дело.

Код дверей такой:

on (press) {
if (!a) {a=-1;}
a=-a;
function vidv() {
_root.dver1._x+=a;
if (_root.dver1._x>914) {clearInterval(time); _root.dver1._x=914;}
if (_root.dver1._x<753) {clearInterval(time); _root.dver1._x=753;}
updateAfterEvent();
}
var time:Number = setInterval(vidv,5);
}

Ящик при закрытой двери находится за ней и его не возможно активизировать. Код ящика такой:

onClipEvent (load) {
function vija() {
_root.jashik._x+=aja; _root.jashik._y+=aja/2;
if (_root.jashik._x>740) {_root.jashik._x=740; aja=0; _root.jashik._y=440;}
if (_root.jashik._x<720) {aja=0; _root.jashik._x=720; _root.jashik._y=430;}
updateAfterEvent();
}
aja=0;
setInterval(vija,5);
}

on (rollOver){aja=1;}
on (rollOut) {aja=-1;}


Для того чтобы понять суть вопроса, вкладываю в письмо исходник.

DarkLight
15.08.2006, 15:15
Странно...у меня ничего не тормиозит...

Koks
15.08.2006, 15:23
Когда дверь еще не до конца открыта, во время её движения, если перебрасывать мышку с двери на ящик и обратно. Двадцати раз будет достаточно. После этого ящик начинает выдвигаться и задвигаться заметно дольше. Если проделать тоже самое еще несколько раз, ящик еще замедлиться. Не пойму почему это происходит.

DarkLight
15.08.2006, 15:29
А...заметил...но когда я пожертвовал updateAfterEvent(), тормоза исчезли, а лично для меня это почти незаметно визуально...
А если поднять частоту кадров до 24, то вообще разницу уловить не могу...

Koks
15.08.2006, 16:09
Убрал везде updateAfterEvent(), повысил частоту кадров. Теперь заметил что чем больше раз открываешь и закрываешь дверь, тем она быстрее начинает двигаеться. Особенно это заметно если не трогать другую дверь, а потом сравнить скорость их открывания. Что за ерунда то, ничего не понимаю.

DarkLight
15.08.2006, 16:13
Все эти странности возможно из-за того, что 5 мс - слишком маленький промежуток. Точность таймеров +-20 мс, насколько я знаю, причем это относится к системе в целом, а не только ко флешу...

Reijii
15.08.2006, 16:13
а если попробовать делать без использования setInterval, а использовать
Transitions ?