Цитата:
Сообщение от gait
1. Вызывать stop() в непосредственно в нужном кадре, но вызов функций в кадре - это нехорошо.
|
Откуда такая информация? Аргументируйте - мне самому интересно. А то, если клип из SWC должен проделывать какую-то анимацию я всегда пишу в кадре "stop()", "gotoAndStop()" etc.
Короче такие маленькие методы я всегда пишу на кадре, зачем засорять класс какими-то ненужными функциями, ентерфреймами и проверками, ради того чтобы остановить какой-то незначительный мувиклип, который и так должен должен остановится после проигрывания анимаии. Короче вот это:

Код AS3:
private var mc:check_mc;
private function foo():void
{
mc = new check_mc();
mc.addFrameScript(mc.totalFrames - 1, onFinalFrame);
addChild(mc);
}
private function onFinalFrame():void
{
mc.stop();
}
сравнивать с вот этим:

Код AS3:
this.stop();
Ничего не скажу, просто со стороны посмотрите.
Цитата:
|
3. Использовать addFrameScript() где callback является глобальной функцией, но в таком случае придется и мувиклип делать глобальным, а это опять же нежелательно.
|
Как in4core уже сказал - он не будет глобальным в таком случае а переменной или свойством класса. Опять же откуда такая информация, что это нежелательно? Пруф пожалуйста.
Цитата:
Сообщение от in4core
Что значит область видимости функции? - откуда такие понятия *?
|
Это то же самое что локальная переменная - видна только в пределах одной функции.
Цитата:
Сообщение от in4core
а локальными переменными пользоваться только в случаях реальной необходимости, например как в цикле
|
А че так? Наоборот же - она удалится GC после выполнения функции и не будет мозолить глаза...
Добавлено через 1 час 8 минут
PS: не поймите меня неправильно. Я не сторонник кода в кадрах. Просто, если есть возможность написать одну строчку в кадре, вместо 15 в классе, то допускаю что эту строчку можно повесить на кадр. Почему допускаю? - потому что это надо делать не все время и когда угодно. Это надо делать с умом. То есть делать лишь в тех случаях, когда код кадра никак не влияет на происходящее вне его пределах. Пример: есть анимация крутящейся звездочки (один оборот/10 кадров). Пишем в классе код - добавляем звезду в дисплей лист. Зачем писать какие-то addFrameScript или ентерфреймовские проверки "не проигралась ли анимация до конца", чтобы вернуть ее на первый кадр и снова проиграть? Лучше написать в кадре gotoAndPlay(1) - и звезда будет крутится вечно. А когда буду писать код в классе - мне не надо парится крутится там звезда или нет - я забываю про ее анимацию и манипулирую ею как простым спрайтом. Кто сказал что такой подход плохой?