php - 尝试在随机时间播放随机歌曲(学习音乐决赛:)

标签 php javascript jquery html audio

Here are the files. Right now I keep getting a message from the alert that the track variable is undefined. It seems like the PHP works because if i go straight to the php link, and manually type in the GET variable, i get the song returned. Also, I am looking for a way to get a random 10 second clip of a song (like how my music teacher tests us). The way I thought of is to divide the duration by 10 and multiply it by a random number, and then use a setineterval to see if the currenttime() is 10 seconds more that the initial audio time.


//index.php
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Music Final Quiz</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <audio src="" id="player"></audio>
    <button id="change_track">Play A Different Track</button>
    <script src="jquery.js"></script>
    <script src="script.js"></script>
</body>
</html>

//script.js
var player = document.getElementById("player");
var changeTrack = document.getElementById("change_track");
var previousNumber = null;
var timeStart = null;

function loadTrack(){
    var randomNumber = Math.floor(Math.random()*11);
    if(randomNumber != 0 && randomNumber != previousNumber){
        previousNumber = randomNumber;
    }else{
        randomNumber = 1;
    }
    var track = $().get("generate_song.php?track_number=" + randomNumber);
    player.src = track;
    player.load();
    // player.currentTime() = (player.duration/10) * Math.floor(Math.random()*11);
    player.play();
    alert(track);
}

window.addEventListener("load", loadTrack);
changeTrack.addEventListener("click",loadTrack);

//generate_song.php
$directory = "Audio_Files";
$files = scandir($directory);
$requested_song = $_GET["track_number"];

echo $files[$requested_song + 1]."<br/>";

最佳答案

player.currentTime是属性,而不是函数,因此应为:

player.currentTime = (player.duration/10) * Math.floor(Math.random()*11);

对于间隔部分,我将添加间隔并检查歌曲是否已暂停:
    function loadTrack(){
        var randomNumber = Math.floor(Math.random()*11);
        if(randomNumber != 0 && randomNumber != previousNumber){
            previousNumber = randomNumber;
        }else{
            randomNumber = 1;
        }
        var track = $().get("generate_song.php?track_number=" + randomNumber);
        player.src = track;
        player.load();
        player.currentTime = (player.duration/10) * Math.floor(Math.random()*11);
        player.play();
        playTenSeconds = setInterval(function(){
            if(player.paused === false){
                player.pause();
                alert(track);
                clearInterval(playTenSeconds);
            }else{
                player.play();
            }
        }, 10);
    }

关于php - 尝试在随机时间播放随机歌曲(学习音乐决赛:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782066/

相关文章:

javascript - 未检索 React Native Firestore 子集合

javascript - 将缓冲区存储在 DataView 中,然后使用 Float64Array 提取不起作用

jquery - 在 iframe 父级中显示 jquery PrettyPhoto 灯箱

javascript - 单击以切换以获得更好的性能方法

php - Facebook 专用点赞按钮工具

php - 如何判断一个邮箱地址是不是教育邮箱?

php - laravel foreach 循环仅在数据库表中存储数组的最后一个元素

php - 如何使用 php jquery ajax 上传文件和插入数据

javascript - jQuery - 如何按属性选择

javascript - 抛出 TypeError,但函数仍然运行,为什么?