Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 尝试从EventListener获取id时出现问题_Flash_Actionscript 3_Event Handling_Movieclip - Fatal编程技术网

Flash 尝试从EventListener获取id时出现问题

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

我正试图通过事件侦听器向其侦听功能发送一个id。以前我只是用代码创建按钮,但当我决定使用现有的movieClips时,它停止了,我不知道为什么

这是我的按钮代码

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;