Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.10.2005, 19:50
RonEXI вне форума Посмотреть профиль Отправить личное сообщение для RonEXI Найти все сообщения от RonEXI
  № 1  
Ответить с цитированием
RonEXI

Регистрация: Sep 2005
Сообщений: 85
По умолчанию Проблемы с 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
Вот и всё...

Старый 30.10.2005, 14:57
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 2  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: 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, время: 14:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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