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

Регистрация: May 2014
Сообщений: 182
Цитата:
Вопрос - если исспользовать отдельный класс для событий Enter_FRAME, то какой класс он должен рассширять?
Класс может и ничего не расширять, но он должен получить ссылку на stage, которую уже и нужно подписывать под EF. В этом классе должен быть метод insert ( добавить ) с параметром, тип у которого будет интерфейс обязующий, что в добавляемом классе точно будет метод move.

Добавлено через 26 минут
Код AS3:
package 
{
	public interface IEnterFrame 
	{
		function move():void;
	}
}
Код AS3:
package 
{
	public class SimpleClass implements IEnterFrame 
	{
		public function SimpleClass() { }
		public function move():void { }
	}
}
Код AS3:
package 
{
	import flash.display.Stage;
	import flash.events.Event;
 
	public class EnterFameClass 
	{
		private var _stage:Stage;
		private var _objects:Array = [];
		private var _count:int;
 
		public function EnterFameClass(stage:Stage) 
		{
			_stage = stage;
		}
 
		public function start():void
		{
			_stage.addEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
		}
 
		public function stop():void
		{
			_stage.removeEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
		}
 
		public function insert(object:IEnterFrame):void
		{
			if (_objects.indexOf(object) != -1) return;
 
			_objects[_count++] = object;
		}
 
		public function remove(object:IEnterFrame):void
		{
			var index:int = _objects.indexOf(object);
 
			if (index == -1) return;
 
			_objects.splice(index, 1);
 
			_count--;
		}
 
		private function stage_enterFrameHandler(event:Event):void 
		{
			for (var i:int = 0; i < _count; i++) 
			{
				_objects[i].move();
			}
		}
	}
}


Последний раз редактировалось LifeIsRhythm; 28.05.2014 в 14:17.