Цитата:
|
Вопрос - если исспользовать отдельный класс для событий 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();
}
}
}
}