我正在尝试从库文件(而不是外部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();
当我播放特定文件时,它可以正常工作
答案 0 :(得分: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();
这将完成你想要的,但是为了将来参考,任何有引号的东西,比如“thing”,都会被编译成文本显示给用户,如果你想访问实际的变量,那么不要使用引号。
另外:Math.floor()只是将其中的任何十进制数转换为其整数值的最低值。示例:Math.floor(5.1341) - > 5和Math.floor(23.9) - > 23。 并且Math.random()返回介于0和.999999之间的随机值...并将其乘以数组的长度使得它返回一个在数组范围内的随机十进制值,然后数学平面然后切割它可以访问其中一个元素。
例如:如果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是一个非常高的回报,所以你最终获得了数组中的最后一个值。 我希望我已经解释了我给你的代码,如果你有任何其他问题,请回复。
答案 1 :(得分:0)
你应该把声音实例放在数组中,而不是字符串类型
var mySoundArray:Array = new Array(dgSound,lnSound,snSound );