![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2005
Сообщений: 85
|
Есть 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 Вот и всё... ![]() |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
не совсем понятно вопрос это или ответ...
но в любом случае, простая оптимизация кода поможет жить: 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, время: 18:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|