繁体   English   中英

AS3动态添加按钮来登台和使用其他功能

[英]AS3 Dynamically adding buttons to stage and accessing in different function

我试图将同一按钮的多个不同版本添加到舞台上,以便以后可以通过为其分配ID来访问它们。 我认为这样做的方法是为按钮定义一个内部静态变量的类,以便可以在下一个函数中找到该ID。 这似乎不起作用,因为ID一直显示为给出的最后一个数字,因此在这种情况下为6。

我以为我做错了吗? 这是我的代码,因此您可以更好地理解:

package src  {

import flash.display.MovieClip;
import flash.events.*;
import flash.utils.Timer;
import flash.net.*
import flash.display.Loader

public class main extends MovieClip {

public var xmlData:XML = new XML
public var currentName = null

    public function main() {
        var y = 0
        for(x=0; x<=6; x++){
            var names:namez = new namez
            namez.ID = y
            y++
            names.y = x*25
            names.addEventListener(MouseEvent.CLICK, checkMe)
            spinner.addChild(names)
        }
    }

    public function checkMe(e:MouseEvent){
        trace("clicked"+namez.ID)
    }
}
}

namez.as类:

package src {

import flash.display.MovieClip

public class namez extends MovieClip{

    internal static var ID

    public function namez() {
    }

}

}

尽管对namez.ID的按钮进行了跟踪,并且在单击按钮时它正确显示了0、1、2、3、4、5、6,但唯一显示的数字是6。

如何正确使其他功能可以访问动态添加的按钮? 我应该在这里使用数组吗?

仅供参考,所需的按钮总数为241。

因为ID是一个静态变量,所以这意味着namez的所有实例只有一个ID,而听起来每个实例都需要一个ID。 只需删除“ static”属性并按如下所示定义ID:

internal var ID

Pbirkoff很好地了解了如何访问.ID属性,但是您可能还希望将事件目标强制转换为namez类,以访问更多自定义属性。

我还注意到,您缺少了一些分号和类型定义,它们可能需要也可能不需要,但它们是良好的编程习惯:

public function main():void {
    var y:int = 0
    for (x:int = 0; x<=6; x++) {
        var names:namez = new namez();
        namez.ID = y;
        y++;
        names.y = x*25;
        names.addEventListener(MouseEvent.CLICK, checkMe);
        spinner.addChild(names);
    }
}

private function checkMe(e:MouseEvent):void {
    var names:namez = e.target as namez;
    trace("clicked" + names.ID);
}

我认为问题在于namez上的ID是静态的。 因此,您不是将Id值分配给特定实例,而是分配给namez-class。

将变量设为公共财产

public var Id:int;

除此之外,在EventListener函数checkMe中,您再次引用类namez,而不是实例。 将该函数更改为:

public function checkMe(e:MouseEvent)
{
    trace('clicked: ' + e.target.Id);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM