0

我是 actionscript 3.0 的新手。我有以下代码:

num0.addEventListener(MouseEvent.CLICK, num0_click);
function num0_click(event:MouseEvent):void
{
    trace(num0);
}

Withnum0是在舞台上手动添加的影片剪辑,而不是任何其他影片剪辑的成员。我的输出是null. 请您解释一下情况并教我如何访问num0这样的函数。

编辑

奇怪的是,如果不用作事件侦听器,该函数可以正常工作:

trace(num0);

num0.addEventListener(MouseEvent.CLICK, num0_click);
function num0_click(event:MouseEvent):void
{
    trace(num0);
}

num0_click(null);

输出如下

[object ...]
[object ...]

并且当单击影片剪辑实例时num0(在 swf 上):

null

4

1 回答 1

0

很简单,

event.currentTarget为您提供当前正在处理/处理该事件的对象。

由于您的事件处理程序num0_click附加到num0,event.currentTarget将返回您需要的内容。

编辑

引用num0不存储在任何地方(来自您提供的代码)。如果您想num0稍后再次使用该名称访问,则必须在 Class 范围内声明一个像这样的变量(或者如果您不使用类,则在所有函数之外)。

var num0:MovieClip;

然后,您可以实例化它并在任何函数中引用它,如下所示:

function init():void {
    num0=new MovieClip();
}

function stop():void {
    num0.stop();
}

编辑 2 您还可以在 addEventListener 中内联声明侦听器函数。

num0.addEventListener(MouseEvent.CLICK, function (event:MouseEvent):void {
    trace(num0);
});
于 2012-07-05T05:46:31.183 回答