【发布时间】:2014-03-11 12:55:33
【问题描述】:
我在正确理解如何调度事件并在另一个类中捕获它们时遇到问题。
在这种情况下,我试图模拟从“clickM”类发送的鼠标点击。
在舞台上,我有 2 个要测试的影片剪辑、一个自定义光标和用于捕获点击事件的侦听器。
点击M:
package {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event; //dispatcher
import flash.events.MouseEvent;// mouse event
public class clickM extends MovieClip {
private var delay: uint = 3000;
private var repeat: uint = 0; //se va por todo el tiempo
private var myTimer: Timer = new Timer(delay, repeat);
public function clickM() {
myTimer.start();
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
}
private function timerHandler(e: TimerEvent): void {
//repeat--;
//statusTextField.text = ((delay * repeat) / 1000) + " seconds left.";
trace ( "simulate click...");
//dispatchEvent(new MouseEvent(MouseEvent.CLICK));
this.dispatchEvent(new MouseEvent(MouseEvent.CLICK, true, false));
}
}
}
Stage code、rojo 和 morado 是电影剪辑:
import flash.events.MouseEvent;
stage.addEventListener(Event.ENTER_FRAME, myFunction);
var mano: clickM = new clickM();
mano.name = "mano";
addChild (mano);
morado.addEventListener(MouseEvent.CLICK, cl);
rojo.addEventListener(MouseEvent.CLICK, cl);
stage.addEventListener(MouseEvent.CLICK, cl);
function myFunction(event: Event) {
mano.x = mouseX;
mano.y = mouseY;
}
function cl(e: MouseEvent) {
trace("click over " + e.target.name);
}
如果我点击 morado 或 rojo,没有问题 - 我可以得到他们的名字。如果我只是让代码运行,我无法得到他们的名字,我只会得到“mano”,这是我正在使用的自定义光标。
如何获得所需的行为?
问候。
【问题讨论】:
标签: actionscript-3 message dispatch