Actionscript 3 如何恢复在AS3中触发eventListener事件的对象?

Actionscript 3 如何恢复在AS3中触发eventListener事件的对象?,actionscript-3,event-listener,Actionscript 3,Event Listener,如何访问触发eventListener事件的对象 假设我有一个mc: var element = new MovieClip(); 其中包含一个eventlistener: element.addEventListener(MouseEvent.CLICK, elementEventHandler); 然后,在事件处理程序中,我想向mc添加一些内容: function elementEventHandler(event:MouseEvent):void { var b1:balloo

如何访问触发eventListener事件的对象

假设我有一个mc:

var element = new MovieClip();
其中包含一个eventlistener:

element.addEventListener(MouseEvent.CLICK, elementEventHandler);
然后,在事件处理程序中,我想向mc添加一些内容:

function elementEventHandler(event:MouseEvent):void
{
    var b1:balloon = new balloon("ballon1"); //this is another class.

    event.target.addChild(b1);//this doesn't work.
}
所以这就是我想要实现的。。。恢复触发事件的对象,然后对其执行疯狂操作(在本例中,在其中添加另一个对象)

如果有人有任何想法,请提前感谢


pd:是的,我知道我可以在这个代码段中直接使用var元素,但在实际代码中,我正在根据xml文件生成循环中的mcs。

出现错误的原因可能是事件不是直接来自
元素,而是来自它的一个后代对象

function elementEventHandler(event:MouseEvent):void
{
    // use the as-operator to cast the target into the class you need
    var element:DisplayObjectContainer = e.target as DisplayObjectContainer;

    // if the cast fails, element will be null, then we bail
    if(!element) return;

    // then, create your child and add it
    var b1:balloon = new balloon("ballon1");
    element.addChild(b1);
}
“单击”
是一个冒泡事件

查看DOM Level 3事件规范中的事件流,了解捕获、目标和冒泡阶段的工作方式:

下面是我要做的:

function elementEventHandler(event:MouseEvent):void
{
    if (event.target != event.currentTarget)
        // If event is not from "element", ignore it.
        return;

    ...
}

嘿,谢谢你的回复。我在使用这种方法时遇到了一个运行时错误:在flash.display::Loader/addChild()中,Loader类没有实现这个方法。似乎addChild不能与DisplayObjectContainer一起使用,对吗?是的,我在AS3中非常新。我已经检查了引用,现在我知道DisplayObjectContainer是所有可视容器类的基类。所以我不知道为什么会出现这个错误,因为addchild()是一个DisplayObjectContainer方法。我明白了!!我使用“event.currentTarget作为DisplayObjectContainer”而不是“event.target作为DisplayObjectContainer”。现在我正在努力理解其中的区别。谢谢!