【发布时间】:2011-01-24 17:37:45
【问题描述】:
我正在尝试通过事件侦听器将 id 发送到它的侦听功能。现在,这在我仅使用代码创建按钮之前有效,但是当我决定使用现有的电影剪辑时,它停止了,我不知道为什么。
这是我的按钮代码。
private function addButtons(){
button1 = new ButtonMC();
//add the buttons
button1.id = 1;
button1.addEventListener(MouseEvent.CLICK, gameClick, false, 0, true);
button1.buttonMode = true;
addChild(button1);
trace("button1 = "+button1.id);
}
trace 发现 button1.id 没有问题。到目前为止还可以。 当我运行它时,侦听器函数报告为“未定义”。这是我的侦听器功能代码。 (不是全部……只是相关部分)。
private function gameClick(evt:MouseEvent):void{
trace("clicked "+evt.target.id);
var gameTypeID = evt.target.id;
}
此代码位于它自己的单独类中,该类生成开始屏幕。影片剪辑按钮是库中作为 ButtonMC 导出的 MC 的副本。我完全不知道为什么现在这不起作用。当它确实起作用时,“生成”按钮仍然是正常的movieClips,所以我看不出有什么区别。也许这是一个范围问题,但是由于所有这些代码都在同一个类中,我不明白为什么会出现问题。
谁能发现我的白痴并请告诉我?非常感谢您一如既往的帮助。
【问题讨论】:
-
尝试将 evt.target 转换为 ButtonMC:trace("clicked" + ButtonMC(evt.target).id);或尝试使用 evt.currentTarget.id
-
您的意思是报告返回为未定义。它给出错误吗?我使用 flex 运行此代码,并带有一个常规的 Button 对象,这很好。
标签: flash actionscript-3 event-handling movieclip