我定义了一个简单的事件类:
公共类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)中定义
答案 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);
}
}
是吗?