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

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

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

Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
Post анимация + несколько состояний

Как лучше организовать объект с несколькими состояниями, каждое из которых имеет свою анимацию?

Старый 21.06.2009, 08:39
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Присоединяюсь к вопросу, хотелось бы узнать промышленное решение. А то юзаю для этих целей либо код на кадрах, либо addFrameScript - по сути то же самое.
__________________
тонкий тролль, осеянный благодатью

Старый 22.06.2009, 11:17
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 3  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Мне тоже интересно кто как делает. Сам для этой цели обычно юзаю паттерн state. Для каждого состояния, есть примерно такой код (это псевдокод, если что):
Код AS3:
class RunState extends State
{
    function RunState::init() : void
    {
        m_startFrame = "run_begin";
        m_endFrame   = "run_frame";
        m_looped       = true;
    }
    // bla bla bla...
}
 
//  Дальше где-то в контексте
class MyObject extends Stateable
{
    function changeState(state : State) : void
    {
        state.init();
        state.setContext(this);
        m_animation.gotoAndPlay(state.m_startFrame);
    }
}

Старый 22.06.2009, 12:08
Gal4enochek вне форума Посмотреть профиль Отправить личное сообщение для Gal4enochek Найти все сообщения от Gal4enochek
  № 4  
Ответить с цитированием
Gal4enochek

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
Я раньше так делала
Код AS3:
public class MyClass extends Sprite
	{
                public static const ST_STATE1		:int = 1;
		public static const ST_STATE2		:int = 2;
		public static const ST_STATE3		:int = 3;	
 
		private var state					: int;
 
		public function MyClass()
		{
			super();
			this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		public function set State(value :int){
			state = value;
			switch(state){
				case ST_STATE1:
					// some actions
					break;
				case ST_STATE2:
					// some actions
					break;
				case ST_STATE3:
					// some actions
					break;		
			}
		}
 
		public function get State():int{
			return state;
		}
 
		private function enterFrameHandler(event :Event):void{
			// если надо что делать
			switch(state){
				case ST_STATE1:
					// some actions
					break;
				case ST_STATE2:
					// some actions
					break;
				case ST_STATE3:
					// some actions
					break;		
			}
		}		
	}
Но сейчас наверное лучше бы паттерн применила.

Старый 22.06.2009, 12:38
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 5  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Цитата:
Сообщение от Gal4enochek Посмотреть сообщение
Я раньше так делала
Код AS3:
public class MyClass extends Sprite
	{
                public static const ST_STATE1		:int = 1;
		public static const ST_STATE2		:int = 2;
		public static const ST_STATE3		:int = 3;	
 
		private var state					: int;
 
		public function MyClass()
		{
			super();
			this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		public function set State(value :int){
			state = value;
			switch(state){
				case ST_STATE1:
					// some actions
					break;
				case ST_STATE2:
					// some actions
					break;
				case ST_STATE3:
					// some actions
					break;		
			}
		}
 
		public function get State():int{
			return state;
		}
 
		private function enterFrameHandler(event :Event):void{
			// если надо что делать
			switch(state){
				case ST_STATE1:
					// some actions
					break;
				case ST_STATE2:
					// some actions
					break;
				case ST_STATE3:
					// some actions
					break;		
			}
		}		
	}
Но сейчас наверное лучше бы паттерн применила.
Если состояний до четырёх, то можно и switch'ом перебирать.

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

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

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


 


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


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