Flash 尝试从EventListener获取id时出现问题
我正试图通过事件侦听器向其侦听功能发送一个id。以前我只是用代码创建按钮,但当我决定使用现有的movieClips时,它停止了,我不知道为什么 这是我的按钮代码Flash 尝试从EventListener获取id时出现问题,flash,actionscript-3,event-handling,movieclip,Flash,Actionscript 3,Event Handling,Movieclip,我正试图通过事件侦听器向其侦听功能发送一个id。以前我只是用代码创建按钮,但当我决定使用现有的movieClips时,它停止了,我不知道为什么 这是我的按钮代码 private function addButtons(){ button1 = new ButtonMC(); //add the buttons button1.id = 1; button1.addEventListener(MouseEvent.CLICK, gam
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);
}
跟踪发现button1.id没有问题。到目前为止还行。
当我运行此函数时,侦听器函数会报告为“未定义”。这是我的侦听器函数代码。(不是全部……只是相关部分)
}
这段代码位于它自己的独立类中,该类生成开始屏幕。movieClip按钮是库中作为ButtonMC导出的MC的副本。我完全搞不懂为什么现在这样不行。当它工作时,“生成”按钮仍然是正常的电影嘴唇,所以我看不出有什么区别。也许这是一个范围问题,但由于所有这些代码都在同一个类中,我不明白为什么会出现这个问题
谁能看出我的白痴并告诉我一声吗?非常感谢您一如既往的帮助。我的第一个猜测是,ButtonMC实例中单击的实际形状或精灵已注册为event.target。您可以测试这个理论,并在侦听器中跟踪getQualifiedClassName(event.target)。或者您可以立即尝试修复并添加
button1.mouseChildren=false
以查看它是否有效。我的第一个猜测是,ButtonMC实例中单击的实际形状或精灵已注册为event.target。您可以测试这个理论,并在侦听器中跟踪getQualifiedClassName(event.target)。或者您可以立即尝试修复并添加button1.mouseChildren=false
查看它是否工作。来自鼠标事件的target
属性指的是实际单击的DisplayAsset—在本例中,是按钮内的其他一些DisplayAsset。您可能会注意到目标
的父项
是按钮(或父项
的父项
,等等)
无论如何,使用
currentTarget
获取添加了事件的目标,或者将按钮的mouseChildren
设置为false
(这样,其子项本身就不会捕获鼠标事件).来自鼠标事件的target
属性指的是实际单击的DisplayAsset,在本例中,是按钮内的其他一些DisplayAsset。您可能会注意到目标
的父项
是按钮(或父项
的父项
,等等)
无论如何,使用
currentTarget
来获取添加了事件的目标,或者将按钮的mouseChildren
设置为false
(这样,它的子项本身就不会捕获鼠标事件)。尝试将evt.target转换为ButtonMC:trace(“单击”+ButtonMC(evt.target).id);或者尝试使用evt.currentTarget.id返回未定义的报告是什么意思。这是一个错误吗?我使用flex和一个常规的Button对象运行了这段代码,结果很好;或者尝试使用evt.currentTarget.id返回未定义的报告是什么意思。这是一个错误吗?我使用flex和一个常规的Button对象运行了这段代码,结果很好。这太棒了。。感谢所有回答的人。使用currentTarget非常有效。Zeh,关于eventListener在按钮中定位其他内容,您是正确的。我在图片下方添加了一个空白的movieClip作为热门形状。我不知道它不会把整个按钮算作一个剪辑。你似乎每天都能从AS3中学到一些新东西。那太棒了。。感谢所有回答的人。使用currentTarget非常有效。Zeh,关于eventListener在按钮中定位其他内容,您是正确的。我在图片下方添加了一个空白的movieClip作为热门形状。我不知道它不会把整个按钮算作一个剪辑。你似乎每天都能从AS3中学到新东西。
private function gameClick(evt:MouseEvent):void{
trace("clicked "+evt.target.id);
var gameTypeID = evt.target.id;