В книге "ActionScript 3 Design Patterns" увидел пример использования этого шаблона - вызов сообщения по таймеру.
На его основе я попробовал сделать своё - вывод сообщения по щелчку мыши. В дальнейшем хочу сделать таким способом перетаскивание объектов на экране.
Но ничего не получается, флэш при компилировании выдаёт ошибку "TestInterfaceOne.as, Line 38 1136: Incorrect number of arguments. Expected 1.".
Вот сам код:
IDrag.as

Код AS3:
package {
public interface IDrag {
function execute():void;
}
}
DragCommand.as

Код AS3:
package {
class DragCommand implements IDrag {
var dragReceiver:DragReceiver;
public function DragCommand(rec:DragReceiver):void {
this.dragReceiver = rec;
}
public function execute():void {
dragReceiver.action();
}
}
}
DragReceiver.as

Код AS3:
package {
import flash.events.*;
import flash.display.*;
public class DragReceiver extends Sprite {
function action() {
trace("hit!");
}
}
}
DragInvoker.as

Код AS3:
package {
import flash.display.*;
import flash.events.*;
class DragInvoker extends Sprite{
var currentCommand:IDrag;
public function setDragCommand(c:IDrag) {
this.currentCommand = c;
trgt.addEventListener(MouseEvent.CLICK, this.trigerPressed);
}
public function trigerPressed(event:MouseEvent):void {
currentCommand.execute();
}
}
}
TestInterfaceOne.as

Код AS3:
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class TestInterfaceOne extends MovieClip{
public function TestInterfaceOne(){
/*Для удобства восприятия я убрал код вызова мувиклипов в сцену*/
var rec:DragReceiver = new DragReceiver();
var concCommand:IDrag = new DragCommand(rec);
var invoker:DragInvoker = new DragInvoker();
invoker.setDragCommand(concCommand);
invoker.setTriger();
}
}
}
В общем, хочу как следует освоить этот паттерн.