Показать сообщение отдельно
Старый 13.08.2013, 16:21
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 5  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
на счет второго пункта - я именно так и предполагал, сейчас накидаю пример

Добавлено через 7 минут
Можно сделать так:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
		private var tw1:Tw1;
		private var player:PlayerMC;
		public function Main()
		{
			tw1 = new Tw1();
			tw1.x = 100;
			tw1.y = 100;
			tw1.name = "Instance1";
			addChild(tw1);
			//
			player = new PlayerMC(tw1);
			player.playAmount(3);
		}
	}
}
Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.EventDispatcher;
 
	public class PlayerMC extends EventDispatcher
	{
		private var mc:MovieClip;
		public function PlayerMC(mc:MovieClip)
		{
			this.mc = mc;
			mc.stop();
		}
 
		private var totalCount:uint;
		private var currentCount:uint;
		private function frameHandler(event:Event):void
		{
			if (mc.currentFrame == mc.totalFrames) {
				currentCount++;
			}
			if (currentCount == totalCount) {
				mc.stop();
				mc.removeEventListener(Event.ENTER_FRAME, frameHandler);
			}
		}
 
 
		public function playAmount(count:uint=1):void
		{
			this.totalCount = count;
			this.currentCount = 0;
			//
			mc.addEventListener(Event.ENTER_FRAME, frameHandler);
			mc.play();
		}
 
		public function stop():void
		{
			mc.removeEventListener(Event.ENTER_FRAME, frameHandler);
			mc.stop();
		}
	}
}
Т.е. класс PlayerMC не является визуальным, это всего лишь контроллер для управления анимацией.

Можно еще расширить класс MovieClip добавить в него метод playAmount, и вызывать его напрямую tw1.playAmount(3), но я бы использовал первый вариант.
__________________
FlashPress.ru | Blog