我真的很困惑,并且使用Phaser js框架构建了一个音乐游戏。
我需要保存在localhost中的路径音频。为了获得这条路,我使用了AJAX。这是我在移植器中的AJAX代码:
function preload()
{
game.load.audio('song', pathsong);
}
function getSong()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
pathsong = xmlhttp.responseText;
alert("succes");
alert(pathsong);
}
else
{
alert(xmlhttp.readyState);
alert(xmlhttp.status);
}
};
xmlhttp.open("GET", "getsong.php" , true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
这是我的getsong.php
<?php
$path = "asset/audio/music/1.mp3";
echo ($path);
?>
xmlhttp.readyState
和xmlhttp.status
会在一段时间内返回4和200并提供成功警报。但这首歌仍然没有播放,这里是它的截图。
The stop text is an alert that the song didn't play.
即使var pathsong
不为空,我也无法理解为什么它没有播放。
我是phaser的新手,还在学习编程。
请不要怪我,对不起,如果我的英语不好。我真的很努力地解释。 ^^ v
答案 0 :(得分:0)
在成功收到AJAX响应后重新定义 pathsong 变量时,可能应立即运行 preload()方法。
尝试在preload();
pathsong = xmlhttp.responseText;