Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2012, 23:45
chuvak2008f вне форума Посмотреть профиль Отправить личное сообщение для chuvak2008f Найти все сообщения от chuvak2008f
  № 1  
Ответить с цитированием
chuvak2008f

Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
Question Как узнать проигрывается ли анимация в данный момент

В общем-то заголовок уместил весь вопрос.

Как узнать о состоянии какой-либо анимации, будь то объекта или всей сцены, идёт проигрывание или нет?

Старый 07.02.2012, 23:53
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Написать свой класс, который расширяет MovieClip. Переопределить в нем методы, которые отвечают за анимацию и создать свойство, которые будет хранить текущее состояние.
Можно и фиксировать состояние и по ENTER_FRAME, но к сожалению, данный способ не поможет, если строчкой выше вызвали stop () или play ().
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.02.2012, 23:59
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 3  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
На сколько помню, в одной из следующих версий ФП это свойство будет в виде геттера. У самого еще не было ситуаций, когда это может понадобиться.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 08.02.2012, 00:26
chuvak2008f вне форума Посмотреть профиль Отправить личное сообщение для chuvak2008f Найти все сообщения от chuvak2008f
  № 4  
Ответить с цитированием
chuvak2008f

Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
В общем задача следующая:
Я нажимаю на кнопку, мувик движется бесконечно.
Теперь нужно нажать на кнопку, остановить мувик и анимация должна проиграть до конца, прежде, чем оборвать цикл, а не оборвалась бы как по функции gotoAndStop(0), или остановилась на пол пути как по stop()

Добавлено через 5 минут
Цитата:
Сообщение от iNils Посмотреть сообщение
Написать свой класс, который расширяет MovieClip. Переопределить в нем методы, которые отвечают за анимацию и создать свойство, которые будет хранить текущее состояние.
Можно и фиксировать состояние и по ENTER_FRAME, но к сожалению, данный способ не поможет, если строчкой выше вызвали stop () или play ().
Написать свой класс?! )) Да я только сел за AS3, написал шашки, а щас тужусь над стрелялкой однокомнатной, как на денди)

Цитата:
Сообщение от TanaTiX Посмотреть сообщение
На сколько помню, в одной из следующих версий ФП это свойство будет в виде геттера. У самого еще не было ситуаций, когда это может понадобиться.
На данный момент желательно решение моментное)

Старый 08.02.2012, 00:35
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 5  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
addFrameScript и булевая переменная, означающая необходимость закончить анимацию должны помочь
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 08.02.2012, 00:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от chuvak2008f Посмотреть сообщение
Написать свой класс?! )) Да я только сел за AS3, написал шашки, а щас тужусь над стрелялкой однокомнатной, как на денди)
Ну это не так сложно
Обычный класс, который наследуется от MovieClip с override для play, stop, gotoAndStop и gotoAndPlay
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.02.2012, 00:54
chuvak2008f вне форума Посмотреть профиль Отправить личное сообщение для chuvak2008f Найти все сообщения от chuvak2008f
  № 7  
Ответить с цитированием
chuvak2008f

Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
addFrameScript и булевая переменная, означающая необходимость закончить анимацию должны помочь
Цитата:
Сообщение от iNils Посмотреть сообщение
Ну это не так сложно
Обычный класс, который наследуется от MovieClip с override для play, stop, gotoAndStop и gotoAndPlay
Можно пожалуйста с примерами?!

Вот мой упрощённый код, что куда надо воткнуть?

Код AS3:
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);
}
Добавлено через 2 минуты
Цель остановить бесконечный цикл cursor, но чтобы он выполнил последнюю анимацию.

Добавлено через 3 минуты
В данной анимации, cursor сбрасывается в 0 кадр.

Добавлено через 15 минут
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
addFrameScript и булевая переменная, означающая необходимость закончить анимацию должны помочь
Ништяк, всем спасибо особенно TanaTiX. Вот рабочий код:

Код AS3:
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 кадре запустил остановку и сброс анимации
}
Добавлено через 21 минуту
Чё-то я поторопился не пашет падла

Старый 08.02.2012, 01:16
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Создаем экземпляр такого класса
Код AS3:
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);
			}
		}
	}
 
}
При необходимости меняем ему свойство isStop.
Цитата:
cursor сбрасывается в 0 кадр.
у мувиклипов кадры начинаются с 1-го, а не с 0-го.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 08.02.2012, 01:28
chuvak2008f вне форума Посмотреть профиль Отправить личное сообщение для chuvak2008f Найти все сообщения от chuvak2008f
  № 9  
Ответить с цитированием
chuvak2008f

Регистрация: May 2011
Адрес: http://jai.ng7.ru http://kuponid.ru
Сообщений: 49
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
Создаем экземпляр такого класса...

При необходимости меняем ему свойство isStop.

у мувиклипов кадры начинаются с 1-го, а не с 0-го.
Серьёзно, а я всё время ставлю 0 - gotoAndPlay(0). Привычка с С++ишных

Спасибо, код возьму на заметку, но я чуть проще сделал:

Код AS3:
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 кадр
}
Добавлено через 22 минуты
Цитата:
Сообщение от TanaTiX Посмотреть сообщение
Создаем экземпляр такого класса...
Чё-то немогу твой класс воткнуть.

Создал класс для проекта - isstop.as, сохранил в той же папке, вот код основного проекта:

Код AS3:
import flash.display.MovieClip;
import isstop;
 
var qwe: MovieClip = cursor;
 
qwe.isStop(1);
Пишет такую ошибку:
TypeError: Error #1006: isStop не является функцией. at shooter_fla::MainTimeline/frame1()

Старый 08.02.2012, 03:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
public class NewClass extends MovieClip
В примере класс называется NewClass

значит в вашем случае будет

Код AS3:
var qwe:ModifiedName = new ModifiedName();
qwe.isStop(1);
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:32.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.