Ошибки Мука. Не работает stop().
Всем привет.
Еще один базовый вопрос. Читаю Мука, разбираю простейший пример из главы Programmatic Timeline Control. Исходные данные: Основной файл: Star_demo.fla. В его библиотеке есть символ Star, и пять безымянных экземпляров на первом (и единственном) фрэйме. К этому символу привязан файл Star.as содержащий програмную анимацию. К Star_demo.fla привязан document class файл: Star_demo.as Который содержит такой код: Код AS3:
Что не так? Вроде бы всё ОК, класс расширяет MovieClip, а значит и наследует его метод stop(). Причем, если эту строчку заменить на: Код AS3:
Свойство namе почему-то видно без проблем. |
Как я разумею, метод getChildAt() возвращает вам DisplayObject, у которого нет метода stop(). А вот свойство name у него есть - поэтому и возвращается без проблем)
Вы же здесь обращаетесь к методу объекта, который вам возвращается, а не к методу вашего класса, в котором работаете: Код AS3:
|
Код AS3:
|
NoisyFlasher, хм, про DisplayObject я как-то не подумал, весьма похоже что так.
Не, ну у меня тоже Adobe Flash CS3 Professional, хотя может его и не стоит считать нормальным IDE? В чем кстати, оптимальнее всего работать, на ваш взгляд? Или это от задач зависит... Bletraut, такой вариант ошибку не выдает, однако... анимация всё-равно продолжается. Может так и должно быть? Видимо он делает stop() на один миг, но потом всё повторяется циклически... |
Ну вот Bletraut показал верный путь, на мой взгляд - привести к MovieClip, а у того уже есть нужный метод.
Вообще, не стоит писать во Flash Professional - по-хорошему, его следует только для подготовки графики использовать. Ну или для каких-то мелких вещей - банер там нарисовать) Я начинал с Eclipse с плагином Flash Development Tools. FDT платный, но есть и бесплатная версия - мне, правда не понравилась. Сейчас пользуюсь Flash Develop (http://www.flashdevelop.org/). Он бесплатный, гибко настраиваемый - мне нравится. А по поводу того, что анимация продолжается - может это из-за того, что она программно задана?.. Можно код файла Star.as? |
Класс Star.as выложите. Метод stop(); останавливает анимацию если она будет сделана на временной шкале, а так как у вас анимация написана через код (я думаю использованы твины) , то stop(); не остановит.А ошибка может быть из-за того ,что star это не MovieClip а Sprite , а у спрайта метода stop(); нет.
|
Самый простой способ - через ссылку.
Код AS3:
|
NoisyFlasher, А-ха, значит FlashDevelop, отлично, так и запишем.
Код сейчас выложу. Там юзается таймер, наверное в этом дело. belv, Нет, в библиотеке у Star тип MovieClip. Код выложен ниже. Mareg, Это какой-то трюк "динамического программирования"? Хотя, по-сути тут тоже идет приведение к типу МувиКлип, насколько я понимаю. Код Star.as: Код AS3:
|
Вот так у меня останавливает анимацию
var mc = getChildAt(i); mc.dispose(); |
Собственно, да. mc.dispose(); Программная анимация и останавливается программно. Таймер, это не стандарт для MovieClip, он добавлен в дочернем классе. Можно конечно сделать таймер public переменной, и стопорить через mc.timer.stop(); , но инкапсуляцией будет правильней.
Я то подумал, что есть Мувклип созданный из-под IDE. Насчет приема - это местная специфика, например можно код писать как и в AS2, через parent, только его нужно преобразовать в Object Код AS3:
|
Часовой пояс GMT +4, время: 21:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.