![]() |
Грамотный вызов stop() у мувиклипа
Приветствую, уважаемые коллеги!
Есть дилемма, которая меня давно мучает: я не знаю, как грамотно вызывать stop() у мувиклипа с областью видимости функции. Есть три часто встречающихся способа, но все они мне не подходят. 1. Вызывать stop() в непосредственно в нужном кадре, но вызов функций в кадре - это нехорошо. 2. Использовать addFrameScript() где callback является анонимной функцией, в которой будет вызван stop() у мувиклипа, но анонимные функции - это тоже нехорошо. 3. Использовать addFrameScript() где callback является глобальной функцией, но в таком случае придется и мувиклип делать глобальным, а это опять же нежелательно. Может можно как-то в callback передать параметр с мувиклипом? Или может существуют какие-нибудь другие, более грамонтные способы? |
ээ, а сделать функцию, которая говорит мувику stop - уже не актуально? создал ее и оперируй с ней
|
А как она ему это говорит? Посредством того, что она анонимная, или посредством того, что мувиклипу придется делать глобальную область видимости. Оба эти варианта меня не устраивают. Повторюсь, у мувиклипа область видимости функции.
Еще пришел в голову вариант создавать для каждого мувиклипа отдельные классы, в которых и будет stop() вызываться напрямую, но это тоже извращение какое-то. Если мувиклипов будет сотни? |
Совсем непонятен вопрос. Ну есть на сцене мувиклип , ну обратились вы к нему из класса как mc.stop() тогда когда это надо. в чем проблема то? Что значит область видимости функции? - откуда такие понятия *?
|
Цитата:
Вот что имелось ввиду под вторым вариантом (локальная переменная и вызов анонимной функции, останавлювающей мувиклип): Код AS1/AS2:
Код AS1/AS2:
|
последний вариант - верный вариант, так и надо писать. и это не глобальная область. а область ( поле ) класса. глобальная это когда во всех классах. не путайте. а локальными переменными пользоваться только в случаях реальной необходимости, например как в цикле
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Короче такие маленькие методы я всегда пишу на кадре, зачем засорять класс какими-то ненужными функциями, ентерфреймами и проверками, ради того чтобы остановить какой-то незначительный мувиклип, который и так должен должен остановится после проигрывания анимаии. Короче вот это: Код AS3:
Код AS3:
Цитата:
Цитата:
Цитата:
Добавлено через 1 час 8 минут PS: не поймите меня неправильно. Я не сторонник кода в кадрах. Просто, если есть возможность написать одну строчку в кадре, вместо 15 в классе, то допускаю что эту строчку можно повесить на кадр. Почему допускаю? - потому что это надо делать не все время и когда угодно. Это надо делать с умом. То есть делать лишь в тех случаях, когда код кадра никак не влияет на происходящее вне его пределах. Пример: есть анимация крутящейся звездочки (один оборот/10 кадров). Пишем в классе код - добавляем звезду в дисплей лист. Зачем писать какие-то addFrameScript или ентерфреймовские проверки "не проигралась ли анимация до конца", чтобы вернуть ее на первый кадр и снова проиграть? Лучше написать в кадре gotoAndPlay(1) - и звезда будет крутится вечно. А когда буду писать код в классе - мне не надо парится крутится там звезда или нет - я забываю про ее анимацию и манипулирую ею как простым спрайтом. Кто сказал что такой подход плохой? |
О! Что-то я усложнил всё, может проще всего вот так?))
Код AS1/AS2:
Цитата:
|
Цитата:
Цитата:
|
Присоединяюсь к мнению HardCoder. Если анимация просто должна крутиться сама по себе, без внешнего управления, то это черный ящик, и пофиг что там внутри накручено для получения нужного результата.
Чтобы писать код в кадрах, нужно сначала научиться не писать код в кадрах :) После этого появляется понимание, когда код в кадре является оптимальным решением, а когда - причиной потери кучи времени и нервов в будущем. |
| Часовой пояс GMT +4, время: 13:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.