Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблемы с onEnterFrame (http://www.flasher.ru/forum/showthread.php?t=71154)

RonEXI 29.10.2005 19:50

Проблемы с onEnterFrame
 
Есть n мувиков и n масок, для каждого мувика своя маска. Сначала маска маленькая и мувик не видим. Далее нужно увеличивать размеры каждой маски чтобы происходила анимация появления мувоков. Дело в том что масок и мувков может быть большое количество, тоесть они создаются динамически. Значит нужно создавать мувики eval("plane"+n)
и маски eval("mask"+n) и увеличивать маску до тех пор пока она не пересекется с определенной координатой eval(n)._x, eval(n)._y а потом удалить onEnterFrame( n -порядковый номер).
ВНИМАНИЕ ВОПРОС!!!: Как сделать так чтобы onEnterFrame не зависил от "n"????? Так как "n" изменяется для создания новых масок и мувиков.

_root.createEmptyMovieClip("plane"+j,10000+random(1000));
// рисуем ченибудь в пустом клипе
_root.attachMovie("mask","mask"+j,20000+random(1000));
// создаем новый эксемпляр маски
eval("plane"+n).onEnterFrame=function(){
// каждый кадр маска увеличивается в размерах, создавая анимацию //появления мувика
eval("mask"+n)._xscale+=2;
eval("mask"+n)._yscale+=2;
if(eval("mask"+n).hitTest(eval(n)._x,eval(n)._y)){
delete eval("plane"+n).onEnterFrame;
}
}
// когда маска увеличится до нужного размера удаляем onEnterFrame
Вот и всё... :)

Iv 30.10.2005 14:57

не совсем понятно вопрос это или ответ...

но в любом случае, простая оптимизация кода поможет жить:

this.enterFrameHandler = function() {
this.mask_mc._xscale += 2;
this.mask_mc._yscale += 2;
var obj = {x:this._width, y:this._height};
this.localToGlobal(obj);
if (this.mask_mc.hitTest(obj.x, obj.y)) {
delete this.onEnterFrame;
this.mask_mc.removeMovieClip()
}
};
this.addPlane = function() {
var d = this.getNextHighestDepth();
var t_mc = this.createEmptyMovieClip("plane"+d+"_mc", d);
var m_mc = t_mc.attachMovie("mask_mc", "mask_mc", 0);
t_mc.setMask(m_mc);
t_mc.onEnterFrame = this.enterFrameHandler
};
//........................................
this.addPlane()

скрипт не идеален, но уже более-менее причесан:

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


Часовой пояс GMT +4, время: 22:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.