AS3 .name属性不适用于库符号

时间:2014-04-18 20:26:57

标签: actionscript-3 flash

我在库中有一个符号,以便稍后添加为ActionScript导出。

循环是按顺序添加它们,但是我想向它们添加一个鼠标事件监听器并让它们在单击时调用另一个函数,所以我尝试将.name属性链接到它们,但它不能正常工作。 target.name,只在循环中工作:(,我尝试了很多东西。我该怎么办?谢谢你:)

    function CreateMenuPagesButtons(): void {

for (var i: uint = 0; i < totalPages; i++) {
    var menu_btn: MenuButton = new MenuButton;
    menu_btn.page_number.text = String(i + 1);
    menu_btn.name = (i + 1).toString();
    menu_btn.x = i * 50;
    menu_btn.page_number.mouseEnabled = false;
    MenuPagesButtons_Container.addChild(menu_btn);
}

    stage.addChild(MenuPagesButtons_Container);

    MenuPagesButtons_Container.addEventListener(MouseEvent.CLICK, movetoTargetMenuPage);

function movetoTargetMenuPage(e: MouseEvent): void {
    var targetPage:String = e.target.name;
    trace(targetPage);

如果在循环内部,trace函数给出正确的名称:1,2,3,而另一个在代码的最后一行,如图所示,通过属性选项卡给出实例的名称..如果没有给出名字,它会给出&#34; Instance110&#34; - &#34; Instance115&#34; - 等..

2 个答案:

答案 0 :(得分:1)

所以我修好了:D:D:D

让我告诉你如果其他人遇到同样的问题。

(e.target.name)指的是覆盖所有符号内部的单击按钮,而不是从顶层引用符号,因此我将其更改为(e.target.parent.name)并且它工作.. Yayyy:D全部感谢:)。

答案 1 :(得分:-1)

就是这样,因为您将监听器添加到MenuPagesButtons_Container,这意味着e.target IS MenuPagesButtons_Container 。如果您想要点击哪个按钮,必须为每个按钮添加听众:

for (...) {
    menu_btn.addEventListener(MouseEvent.CLICK, movetoTargetMenuPage);

然后它会起作用。