![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
|
В общем-то заголовок уместил весь вопрос.
Как узнать о состоянии какой-либо анимации, будь то объекта или всей сцены, идёт проигрывание или нет? |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Написать свой класс, который расширяет MovieClip. Переопределить в нем методы, которые отвечают за анимацию и создать свойство, которые будет хранить текущее состояние.
Можно и фиксировать состояние и по ENTER_FRAME, но к сожалению, данный способ не поможет, если строчкой выше вызвали stop () или play (). |
|
|||||
|
На сколько помню, в одной из следующих версий ФП это свойство будет в виде геттера. У самого еще не было ситуаций, когда это может понадобиться.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
|
В общем задача следующая:
Я нажимаю на кнопку, мувик движется бесконечно. Теперь нужно нажать на кнопку, остановить мувик и анимация должна проиграть до конца, прежде, чем оборвать цикл, а не оборвалась бы как по функции gotoAndStop(0), или остановилась на пол пути как по stop() Добавлено через 5 минут Цитата:
На данный момент желательно решение моментное) |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Цитата:
![]() Обычный класс, который наследуется от MovieClip с override для play, stop, gotoAndStop и gotoAndPlay ![]() |
|
|||||
|
Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
|
Цитата:
Цитата:
Вот мой упрощённый код, что куда надо воткнуть? stage.addEventListener(MouseEvent.MOUSE_DOWN, runShot); stage.addEventListener(MouseEvent.MOUSE_UP, stopShot); function runShot(event: MouseEvent):void { cursor.play(); } function stopShot(event: MouseEvent):void { cursor.gotoAndStop(0); } Цель остановить бесконечный цикл cursor, но чтобы он выполнил последнюю анимацию. Добавлено через 3 минуты В данной анимации, cursor сбрасывается в 0 кадр. Добавлено через 15 минут Цитата:
stage.addEventListener(MouseEvent.MOUSE_DOWN, runShot); stage.addEventListener(MouseEvent.MOUSE_UP, stopShot); function runShot(event: MouseEvent):void { cursor.play(); } function stopShot(event: MouseEvent):void { addFrameScript(10, cursor.gotoAndStop(0)); // На 10 кадре запустил остановку и сброс анимации } Чё-то я поторопился не пашет падла |
|
|||||
|
Создаем экземпляр такого класса
package { import flash.display.MovieClip; /** * ... * @author TanaTiX */ public class NewClass extends MovieClip { private var _isStop:Boolean = false; public function NewClass() { addFrameScript(totalFrames - 1, onLastFrame); } public function get stop():Boolean { return _isStop; } public function set isStop(value:Boolean):void { if (value == _isStop) return; _isStop = value; if (!_isStop) { pllay(); } } private function onLastFrame():void { if (_isStop) { stop(); }else { gotoAndPlay(1); } } } } Цитата:
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
|
Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
|
Цитата:
Спасибо, код возьму на заметку, но я чуть проще сделал: stage.addEventListener(MouseEvent.MOUSE_DOWN, runShot); stage.addEventListener(MouseEvent.MOUSE_UP, stopShot); function runShot(event: MouseEvent):void { cursor.addFrameScript(9, null); // Снять функцию с 9 кадра cursor.play(); } function stopShot(event: MouseEvent):void { cursor.addFrameScript(9, cursor.stop); // Поставить функцию остановки на 9 кадр } Чё-то немогу твой класс воткнуть. Создал класс для проекта - isstop.as, сохранил в той же папке, вот код основного проекта: Пишет такую ошибку: TypeError: Error #1006: isStop не является функцией. at shooter_fla::MainTimeline/frame1() |
|
|||||
|
[+4 06.05.14]
|
Цитата:
значит в вашем случае будет
__________________
Марк Tween |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|