【问题标题】:Call a random function from an array从数组中调用随机函数
【发布时间】:2015-08-28 17:34:21
【问题描述】:

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

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);

}

我哪里出错了有什么线索吗?

【问题讨论】:

  • 我看到您已经对您的问题有了答案,但请考虑修改您的代码,以便维护它的人保持理智。无需在祖先上操作对象,只需调度三个冒泡事件之一并让祖先进行更改。另外,考虑到您可以制作一个四帧 mc,其中显示了适当的手臂状态,然后根据您需要的一个导航到第一帧、第二帧、第三帧或 for(或使用与事件名称匹配的标签)。
  • 我现在正在工作(而且我完全靠自己工作,我是唯一一个必须处理代码的人)所以我很好!将它放在不同的框架上是我的主要想法,这就是我对其他 mc 所做的,但是在这样做时颜色转换无法正常工作。因此,我不得不用可见性 false/true 来解决它。

标签: actionscript-3 flash-cs5


【解决方案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])();

【讨论】:

  • 哦,我明白了!谢谢你的帮助。第二个选项当然很有帮助,因为我需要用其他函数数组再创建三次相同的东西!
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 2012-04-25
  • 2019-07-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-10
相关资源
最近更新 更多