从数组中调用随机函数

时间:2015-08-28 17:34:21

标签: actionscript-3 flash-cs5

我在数组中列出了三个函数。现在我需要按下按钮时要调用的三个随机函数。但是,当我按下按钮时,它会调用所有三个功能,而且我不太确定我哪里出错了。它现在看起来像这样:

function Arm1function1(){
this.parent.parent.parent.Armfront1.visible = true;
this.parent.parent.parent.Armback1.visible = false;
}

function Arm1function2(){
this.parent.parent.parent.Armfront1.visible = false;
this.parent.parent.parent.Armback1.visible = true;
}

function Arm1function3(){
this.parent.parent.parent.Armfront1.visible = false;
this.parent.parent.parent.Armback1.visible = false;
}

function getRandomElementOf(Armbuttonarray1:Array):Object {
var Armbuttonarray1:Array = [Arm1function1(), Arm1function2(), Arm1function3()];
var idx:int=Math.floor(Math.random() * Armbuttonarray1.length);
return Armbuttonarray1[idx];
}

Randombutton1part1.addEventListener(MouseEvent.CLICK, Randombutton1part1Click);
function Randombutton1part1Click(e:MouseEvent):void
{   
getRandomElementOf(null);

}

我发生错误的任何线索?

1 个答案:

答案 0 :(得分:1)

您的问题是这一行:

var Armbuttonarray1:Array = [Arm1function1(), Arm1function2(), Arm1function3()];

填充该数组时,实际上是使用函数的结果填充它。

应该是:

var Armbuttonarray1:Array = [Arm1function1, Arm1function2, Arm1function3];

注意缺少括号()

您希望在点击处理程序上实际执行该功能,因此您还需要稍微调整一下:

getRandomElementOf(null)();

getRandomElementOf(null).call();

顺便说一下,你的getRandomElementOf函数应该看起来更像这样:

function getRandomElementOf(array:Array):Object {
    return array[Math.floor(Math.random() * array.length)];
}

然后做:

getRandomElementOf([Arm1function1, Arm1function2, Arm1function3])();