actionscript 3函数无法访问手动movieclip

时间:2012-07-05 05:41:52

标签: flash actionscript movieclip

我是动作脚本3.0的新手。我有以下代码:

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

num0是在舞台上手动添加的动画片段,而不是任何其他动画片段的成员。 我的输出是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

1 个答案:

答案 0 :(得分:0)

很简单,

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

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

修改

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

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);
});