Вход

Просмотр полной версии : AsBroadcaster. Как сгенерить кастомное событие в классе?


terbooter
19.04.2008, 13:47
На АС2 не писал уже давно. Не понимаю как сделать, чтобы мувик генерил события
На код:

import mx.utils.Delegate;
import AsBroadcaster;


class Slot extends MovieClip {

private var intervalId:Number;
private var currentCount:Number;

public function Slot() {

AsBroadcaster.initialize(this);
this.currentCount = 1;

this.rotateSlot();
}

public function rotateSlot():Void {
this.intervalId = setInterval(Delegate.create(this,myTimer), 25);
}

private function myTimer():Void {

this.currentCount++;
if (this.currentCount % 30 == 0) {
clearInterval(this.intervalId);
trace(this);
this.broadcastMessage("onStopRotating");
}
updateAfterEvent();
}
}
Выдает ошибку:
There is no method with the name "broadcastMessage";

iNils
19.04.2008, 14:34
Вместо this в
AsBroadcaster.initialize(this);
создайте объект obj и вещайте от него
AsBroadcaster.initialize(obj);
...
obj.broadcastMessage("onStopRotating");


ps. Хотя нет, можно и лучше сделать так. Оставить свой код, но добавить к нему
private var broadcastMessage:Function;

silin
19.04.2008, 15:03
broadcastMessage на самом деле есть, AsBroadcaster.initialize(this) его скопирует в экземпляр, но компилятор об этом не знает..
т.е. надо его просто задекларировать:
private var broadcastMessage:Function;
public var addListener:Function;

вещание от объекта решает вопрос в том смысле, что компилятор не проверяет его поля..

вещать от класса или созданного объекта в конечном итоге не принципиально, хотя мне больше по душе первое: не люблю лишние детали..:)