|
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Грамотный вызов stop() у мувиклипа
Приветствую, уважаемые коллеги!
Есть дилемма, которая меня давно мучает: я не знаю, как грамотно вызывать stop() у мувиклипа с областью видимости функции. Есть три часто встречающихся способа, но все они мне не подходят. 1. Вызывать stop() в непосредственно в нужном кадре, но вызов функций в кадре - это нехорошо. 2. Использовать addFrameScript() где callback является анонимной функцией, в которой будет вызван stop() у мувиклипа, но анонимные функции - это тоже нехорошо. 3. Использовать addFrameScript() где callback является глобальной функцией, но в таком случае придется и мувиклип делать глобальным, а это опять же нежелательно. Может можно как-то в callback передать параметр с мувиклипом? Или может существуют какие-нибудь другие, более грамонтные способы? Последний раз редактировалось gait; 07.02.2012 в 03:32. |
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
ээ, а сделать функцию, которая говорит мувику stop - уже не актуально? создал ее и оперируй с ней
__________________
а за окном атлантический океан! |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
А как она ему это говорит? Посредством того, что она анонимная, или посредством того, что мувиклипу придется делать глобальную область видимости. Оба эти варианта меня не устраивают. Повторюсь, у мувиклипа область видимости функции.
Еще пришел в голову вариант создавать для каждого мувиклипа отдельные классы, в которых и будет stop() вызываться напрямую, но это тоже извращение какое-то. Если мувиклипов будет сотни? Последний раз редактировалось gait; 07.02.2012 в 03:48. |
|
|||||
[+4 06.05.14]
|
Совсем непонятен вопрос. Ну есть на сцене мувиклип , ну обратились вы к нему из класса как mc.stop() тогда когда это надо. в чем проблема то? Что значит область видимости функции? - откуда такие понятия *?
__________________
Марк Tween |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Такие понятия у Мука я вычитал, но может что-то неправильно понял и это называтся по-другому (просто локальная область видимости, например).
Вот что имелось ввиду под вторым вариантом (локальная переменная и вызов анонимной функции, останавлювающей мувиклип): private function foo():void { var mc:check_mc = new check_mc(); //у объекта mc локальная область видимости mc.addFrameScript(mc.totalFrames - 1, function ():void { mc.stop(); } ); //анонимная функция останавливает мувиклип addChild(mc); } Последний раз редактировалось gait; 07.02.2012 в 04:08. |
|
|||||
[+4 06.05.14]
|
последний вариант - верный вариант, так и надо писать. и это не глобальная область. а область ( поле ) класса. глобальная это когда во всех классах. не путайте. а локальными переменными пользоваться только в случаях реальной необходимости, например как в цикле
__________________
Марк Tween |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Цитата:
Цитата:
А если у меня этих мувиклипов несколько десятков и у каждого должен быть с десяток вызовов stop() в разных кадрах? Все мувиклипы выносить в поле класса и для каждого создавать отдельную функцию, вызывающую stop()? Последний раз редактировалось gait; 07.02.2012 в 04:36. |
|
|||||
Цитата:
Короче такие маленькие методы я всегда пишу на кадре, зачем засорять класс какими-то ненужными функциями, ентерфреймами и проверками, ради того чтобы остановить какой-то незначительный мувиклип, который и так должен должен остановится после проигрывания анимаии. Короче вот это: 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(); } Цитата:
Цитата:
Добавлено через 1 час 8 минут PS: не поймите меня неправильно. Я не сторонник кода в кадрах. Просто, если есть возможность написать одну строчку в кадре, вместо 15 в классе, то допускаю что эту строчку можно повесить на кадр. Почему допускаю? - потому что это надо делать не все время и когда угодно. Это надо делать с умом. То есть делать лишь в тех случаях, когда код кадра никак не влияет на происходящее вне его пределах. Пример: есть анимация крутящейся звездочки (один оборот/10 кадров). Пишем в классе код - добавляем звезду в дисплей лист. Зачем писать какие-то addFrameScript или ентерфреймовские проверки "не проигралась ли анимация до конца", чтобы вернуть ее на первый кадр и снова проиграть? Лучше написать в кадре gotoAndPlay(1) - и звезда будет крутится вечно. А когда буду писать код в классе - мне не надо парится крутится там звезда или нет - я забываю про ее анимацию и манипулирую ею как простым спрайтом. Кто сказал что такой подход плохой?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
О! Что-то я усложнил всё, может проще всего вот так?))
Он тоже в одну строчку Цитата:
Последний раз редактировалось gait; 07.02.2012 в 18:19. |
|
|||||
Цитата:
__________________
Я мало чего умею, но зато хорошо умею учиться... |
Часовой пояс GMT +4, время: 04:08. |
|
« Предыдущая тема | Следующая тема » |
Теги |
addFrameScript |
|
|