Песня не воспроизводилась, когда URL не был пустым

Я действительно запутался и застрял в создании музыкальной игры с использованием фреймворка Phaser js.

Мне нужен звук пути, который сохранен на локальном хосте. Чтобы получить этот путь, я использую AJAX. Вот мой код AJAX в Phaser:

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

А вот и мой getong.php

<?php

$path = "asset/audio/music/1.mp3";
echo ($path);
?>

xmlhttp.readyState и xmlhttp.status возвращают 4 и 200 через некоторое время и выдают предупреждение об успехе. Но песня так и не заиграла, вот скриншот.

Текст остановки – это предупреждение о том, что песня не воспроизводится.

Я не могу понять, почему он не играл, даже если var pathsong не равен нулю. Я новичок в фазере и все еще изучаю программирование. Пожалуйста, не вините меня, и извините, если мой английский плохой. Я очень стараюсь объяснить. ^^v


person Renee    schedule 11.04.2016    source источник


Ответы (1)


Вероятно, вам следует запустить метод preload() сразу после переопределения переменной pathsong, когда ответ AJAX был успешно получен.

Попробуйте добавить preload(); после строки pathsong = xmlhttp.responseText;

person Igor Bukin    schedule 11.04.2016