AS:如何处理父组件中的自定义事件

时间:2010-02-06 13:35:26

标签: flex actionscript-3 events

我定义了一个简单的事件类:

公共类NewMoveEvent扩展了Event {

public function NewMoveEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
    {
        super(type, bubbles, cancelable);
    }

}

}

然后在自定义mxml组件中,我定义了一个触发它的按钮:

<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="ui.*" layout="absolute" width="682" height="412" title="Board">
<mx:Metadata>
    [Event(name="newformevent", type="events.NewMoveEvent")]
</mx:Metadata>
<mx:Script>
    <![CDATA[
        import events.NewMoveEvent;
        import config.Config;


        private function addNewUIComponent(event:Event):void
        {
            var e:NewMoveEvent = new NewMoveEvent("newformevent");
            dispatchEvent(e);
        }
    ]]>
</mx:Script>
<ns1:ChessBoard x="8" y="9" width="350" height="350" backgroundColor="0x99CCCC" moveId="0" name="chessboard" themeColor="#FFFFFF"/>
<mx:Button id="next" x="507" y="127" label="Next" click="addNewUIComponent(event)"/>
<ns1:PieceContainer x="363" y="10" width="292" height="51" items="{Config.piecesWhite}" id="white"/>
<ns1:PieceContainer x="362" y="69" width="292" height="51" items="{Config.piecesBlack}" id = "black"/>
<ns1:PasteBin x="363" y="306" width="292" height="53" backgroundColor="0x99CCCC" id="paste"/>
<mx:Button x="445" y="127" label="Save" name="save" enabled="false"/>

否我要将主要的应用程序文件设置为此事件的事件处理程序。 我可以从mxml

轻松完成

e.g。

但是无法在动作脚本中执行此操作(例如,此代码不起作用):

        private function addNewUIContainer(event:Event):void
        {
            var newBoard:UIContainer = new UIContainer();
                newBoard.addEventListener(NewMoveEvent.NEWFORMEVENT, addNewUIContainer);
        }

编译器给我一个错误。不明白为什么。

错误

通过带有静态类型Class的引用访问可能未定义的属性NEWFORMEVENT。

是的,UIContainer是mxml类


函数addNewUiContainer在主文件(project.mxml)中定义

1 个答案:

答案 0 :(得分:2)

看起来您没有定义public static const NEWFORMEVENT:String = "newformevent";

public class NewMoveEvent extends Event
{
    public static const NEWFORMEVENT:String = "newformevent";

    public function NewMoveEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
    {
        super(type, bubbles, cancelable);
    }

}
是吗?