Flex传递事件处理程序并将其添加到itemrenderer中的动态创建的对象

时间:2011-05-27 07:20:14

标签: flex actionscript-3 tree mxml itemrenderer

我有Tree,其中有itemRenderer。在itemRenderer上,在XML条件的驱动下,对象是动态创建的,并作为子节点添加到节点中。 这些新对象应触发事件处理程序(主要是一些点击事件)。

  • 如何将事件处理程序传递给树,然后传递给itemRendere内动态创建的新对象?

类似的东西:

<mx:Tree x="534" y="49" newObjectsOnClick="newObjectsOnClickHandler">

1 个答案:

答案 0 :(得分:1)

对从项呈示器调度的事件使用事件冒泡。

因此,请按以下方式创建自定义事件:

public class MyEvent extends Event
{
    public static const SOME_ACTION_PERFORMED:String = "someActionPerformed";
    public function MyEvent(type:String)
    {
        // The second parameter is for bubbling!
        super(type, true, false);
    }

    override public function clone():Event
    {
        return new MyEvent(type);
    }
}
}

然后在渲染器中:

dispatchEvent(new MyEvent(MyEvent.SOME_ACTION_PERFORMED));

在包含Tree

的课程中
private function onInit():void
{
    addEventListener(MyEvent.SOME_ACTION_PERFORMED, someActionHandler);
}

private function someActionHandler(event:MyEvent):void
{
    // Perform necessary actions here
    …
    // Then stop bubbling
    event.stopImmediatePropagation();
}