0

我正在尝试从库文件(而不是来自外部 mp3 文件)中播放随机声音。我创建了一个声音对象数组,但是当我尝试从数组中播放声音时,它没有播放。请帮忙?

var dgSound:Sound = new DogSound();
var lnSound:Sound = new LionSound();
var snSound:Sound = new SnakeSound();
var mySoundArray:Array = new Array("dgSound","lnSound","snSound");
mySoundArray[0].play();

当我播放特定文件时,它可以工作

4

2 回答 2

1
var dgSound:Sound = new DogSound();
var lnSound:Sound = new LionSound();
var snSound:Sound = new SnakeSound();
var mySoundArray:Array = new Array(dgSound,lnSound,snSound);
mySoundArray[Math.floor(Math.random()*mySoundArray.length)].play();

这将完成你想要的,但为了将来参考,任何有引号的东西,比如“东西”,都将被编译为文本以显示给用户,如果你想访问实际变量,那么不要使用引号。

另外: Math.floor() 只是将其中的任何十进制数转换为其整数值的下限值。示例:Math.floor(5.1341) --> 5 和 Math.floor(23.9) --> 23。然后 Math.random() 返回一个介于 0 和 .999999 之间的随机值...并将其乘以array 使它返回一个在数组范围内的随机十进制值,然后 math floor 将其削减以访问其中一个元素。

例如:如果 Math.random() 返回 .8562... 那么你会得到:

mySoundArray[Math.floor(.8562*mySoundArray.length)].play();
mySoundArray[Math.floor(.8562*3)].play();
mySoundArray[Math.floor(2.5686)].play();
mySoundArray[2].play();
snSound.play();

.8562 是一个相当高的回报,所以你最终得到了数组中的最后一个值。我希望我已经解释了我给你的代码,如果你有任何进一步的问题,请回复。

于 2013-10-14T02:39:04.963 回答
0

您应该将声音实例放在数组中,而不是字符串类型

var mySoundArray:Array = new Array(dgSound,lnSound,snSound );
于 2013-10-14T02:04:36.550 回答