Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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 如何为每个按钮提供动态创建的按钮操作_Flash_Actionscript 3 - Fatal编程技术网

Flash 如何为每个按钮提供动态创建的按钮操作

Flash 如何为每个按钮提供动态创建的按钮操作,flash,actionscript-3,Flash,Actionscript 3,第一次在这里发布。我使用循环来创建3个按钮,但我的问题是将按钮操作分配给每个按钮。“我的按钮侦听器/操作代码”仅适用于创建的最后一个按钮:( 我试图用我给按钮的名称($navButton.name=“button”+I)来定位按钮,但这给按钮1带来了一个未定义的错误 任何帮助都将不胜感激,我是AS3 noob:“( 函数createNav(){ for(变量i:Number=0;i

第一次在这里发布。我使用循环来创建3个按钮,但我的问题是将按钮操作分配给每个按钮。“我的按钮侦听器/操作代码”仅适用于创建的最后一个按钮:(

我试图用我给按钮的名称($navButton.name=“button”+I)来定位按钮,但这给按钮1带来了一个未定义的错误

任何帮助都将不胜感激,我是AS3 noob:“(

函数createNav(){
for(变量i:Number=0;i
我会将按钮添加到阵列广告访问中,如下所示:

循环之外:

var buttons:Array = []
buttons.push(navButton)
buttons[1].addEventListener(MouseEvent.MOUSE_UP, navAction);
在循环中:

var buttons:Array = []
buttons.push(navButton)
buttons[1].addEventListener(MouseEvent.MOUSE_UP, navAction);
如果您试图向单个按钮添加自定义功能,则应在循环之外执行此操作。命名对象不会为您提供具有实例名称的对象。要按上述方式访问该对象,您需要使用:

var button1:NavButton
这将允许您像以前那样访问。使用name属性,您可以使用以下内容:

if(navButton.name == "button1")
    navButton.addEventListener(Event.BLAHBLAH, DoStuff);
我强烈建议不要使用匿名函数作为事件侦听器。请改用命名函数和事件的目标属性:

function handleButtonClick(event:MouseEvent):void
{
    var button:NavButton = event.target as NavButton;
    if(button)
        button.nextFrame()
}
虽然它可能(可能会)和匿名函数一起工作,但若您使用命名函数,调试会容易得多


顺便说一句,在AS3中使用$for您的VAR通常是不好的形式,这对于所有AS3编程来说都是非常好的约定。

我会将按钮添加到数组ad访问中,如下所示:

循环之外:

var buttons:Array = []
buttons.push(navButton)
buttons[1].addEventListener(MouseEvent.MOUSE_UP, navAction);
在循环中:

var buttons:Array = []
buttons.push(navButton)
buttons[1].addEventListener(MouseEvent.MOUSE_UP, navAction);
如果您试图向单个按钮添加自定义功能,则应在循环之外执行此操作。命名对象不会为您提供具有实例名称的对象。要按上述方式访问该对象,您需要使用:

var button1:NavButton
这将允许您像以前那样访问。使用name属性,您可以使用以下内容:

if(navButton.name == "button1")
    navButton.addEventListener(Event.BLAHBLAH, DoStuff);
我强烈建议不要使用匿名函数作为事件侦听器。请改用命名函数和事件的目标属性:

function handleButtonClick(event:MouseEvent):void
{
    var button:NavButton = event.target as NavButton;
    if(button)
        button.nextFrame()
}
虽然它可能(可能会)和匿名函数一起工作,但若您使用命名函数,调试会容易得多


顺便说一句,在AS3中使用$for您的变量通常是不好的形式,这是所有AS3编程的优秀约定。

Awesome!关于函数名和变量命名的提示也适用于thx:D和thx…太棒了!关于函数名和变量命名的提示也适用于thx:D和thx。。。