對於正在醞釀中的遊戲工作:使用一個HTML5 <audio>
元素和一些JavaScript,我試圖創建一個選擇來自物體的隨機鍵(這將是一個數組)的播放列表。所選對象基於玩家狀態的「心情」。然後我從數組中提取歌曲的源URL,如果所選歌曲尚未播放,請加載它,然後播放它。該play
功能如下(這是一個對象字面的一部分):與「隨機」陣列
play: function(option) {
if (G.audio.enabled) {
var player = G.audio.player,
playlist = G.audio.playlist;
if (option && G.audio.playlist[option]) {
G.audio.mood = option;
var song = playlist[option][Math.floor(Math.random() * (playlist[option].length))][2];
if (G.audio.current != song) {
G.audio.current = song;
player.attr("src", song);
player[0].load();
player[0].play();
} else {
G.audio.play(G.audio.mood);
}
} else {
G.audio.play(G.audio.mood);
}
try {
player[0].removeEventListener("ended", G.audio.play);
} catch (e) {}
player[0].addEventListener("ended", G.audio.play);
}
}
因此,舉例來說,如果我們用處理(且只有)「英雄」類(這是情緒),G.audio.playlist
應該是這樣的:
heroic: [
[
"Song Title",
"Artist",
"Source url",
"other info"
],
[
"Song Title",
"Artist",
"Source url",
"other info"
],
[
"Song Title",
"Artist",
"Source url",
"other info"
]
];
一切工作正常,除了一兩件事:第二首很少玩,而第一和第三通常是在負載玩的人。
所以,我的問題是,是否有關於爲什麼任何邏輯推理:
playlist[option][Math.floor(Math.random() * (playlist[option].length))][2];
會給予優先於數組的第一個([0]
)和第三個鍵([2]
)?
您確定存在偏見嗎?你的隨機數生成代碼看起來很好...... – emboss