Heim  >  Artikel  >  Web-Frontend  >  HTML5-Anwendung – Beispielcode-Freigabe für die Implementierung eines einfachen Players

HTML5-Anwendung – Beispielcode-Freigabe für die Implementierung eines einfachen Players

黄舟
黄舟Original
2017-03-18 15:24:332023Durchsuche

           如今HTML已经是比较热门的了,各种关于HTML5的应用程序、游戏、应用商店等也如火如荼的展开了。各大主流浏览器也纷纷开始支持HTML5标准,以备打赢新的一轮浏览器大战。

           话不多说,不知道大家有没有发现,可以用比较新的版本的谷歌浏览器直接打开.mp3格式的音乐。自己可以试试: 

      这是用谷歌浏览器直接打开mp3文件的情况。 其实,许多新的浏览器都开始支持HTML5中b97864c2e0ef2353a16c4d64c7734e92 39000f942b2545a5315c57fa3276f220标签,使得一些格式的流媒体可以摆脱对插件的依赖。 下面我就以b97864c2e0ef2353a16c4d64c7734e92标签做一个简易的音乐播放器.


     b97864c2e0ef2353a16c4d64c7734e92控件可以通过一些内置的JavaSceipt函数和特性进行控制,以及进行二次开发。例如load()、play()、pause()等控制音频播放的函数,paused、ended、currentTime、startTime等属性等.

         对于这个简易播放器具有播放\暂停、快进、快退等功能,结合5ba626b379994d53f7acf72a64f9b697对象绘制图形

<%@language="javascript" %>
<html>
<head>
<title>PlayMusic</title>
<style type="text/css">
    p.s{position:absolute;left:100px;top:200px;width:600px;}
    audio{width:600px;position:absolute;left:0px;top:100px;}
    canvas{position:absolute;left:0px;top:40px;}
    marquee{position:absolute;left:250px;top:180px;}
    h1{color:Red;}
    h1.a{color:Green;position:absolute;left:200px;top:50px;}
</style>
</head>
<body>
<h1 class="a">欢迎使用HTML5播放器</h1>
<%
    var name = Request.QueryString("name");
    if (name == "")
        name = "";

    name1 = "save_music\\" + name + ".mp3";
    //Response.Write(name);
    
 %>
 <marquee behavior=scroll scrolldelay=200 scrollamount=30 width="300" ><h1><%=name %></h1></marquee>
 <p class="s">
 <canvas width="600" height="60" id="MusicCanvas"  onclick="dealclick()"></canvas>
<audio id="music" src=<%=name1 %> controls>
您的浏览器不支持HTML5中的audio标签
</audio>
</p>
</body>
</html>
<script type="text/javascript">
    var c = document.getElementById("MusicCanvas");
    var con = c.getContext("2d");
    var toggle = document.getElementById("music");
    drawPS();
    drawQuick();
   
    function drawPS() //flag=1表示播放命令,flag=0表示暂停
    {
        con.save();
        con.beginPath();
        var g = con.createRadialGradient(275, 30, 0, 275, 30, 25); //创建渐变颜色
        if (toggle.paused) //暂停状态
        {
            g.addColorStop(0.2, "#1FD856"); //
            g.addColorStop(0.8, "black"); //
            toggle.play();
        }
        else //播放状态
        {
            g.addColorStop(0.2, "red"); //黄
            g.addColorStop(0.8, "black"); //
            toggle.pause();
        }
        con.fillStyle = g;
        con.arc(275, 30, 25, 0, Math.PI * 2, true);
        con.fill();
        con.closePath();
        con.restore();
         
    }
    function drawQuick() //
    {
        con.save();
        con.beginPath();
        con.fillStyle = "grey";
        con.fillRect(130, 10, 70, 40);
        con.fillStyle = "black";
        con.moveTo(130, 30);
        con.lineTo(145, 13);
        con.lineTo(165, 13);
        con.lineTo(150, 30);
        con.lineTo(165, 47);
        con.lineTo(145, 47);
        con.lineTo(130, 30);
        con.fill();
        con.moveTo(160, 30); 
        con.lineTo(175, 13); 
        con.lineTo(195, 13); 
        con.lineTo(180, 30); 
        con.lineTo(195, 47); 
        con.lineTo(175, 47); 
        con.lineTo(160, 30);
        con.fill();
        con.closePath();
        con.beginPath();
        con.fillStyle = "grey";
        var x = 350;
        con.fillRect(x, 10, 70, 40);
        x += 70;
        con.fillStyle = "black";
        con.moveTo(x, 30); 
        con.lineTo(x - 15, 13); 
        con.lineTo(x - 35, 13); 
        con.lineTo(x - 20, 30); 
        con.lineTo(x - 35, 47); 
        con.lineTo(x - 15, 47); con.lineTo(x, 30);
        x -= 30;
        con.moveTo(x, 30); 
        con.lineTo(x - 15, 13); 
        con.lineTo(x - 35, 13); 
        con.lineTo(x - 20, 30); 
        con.lineTo(x - 35, 47); 
        con.lineTo(x - 15, 47); 
        con.lineTo(x, 30);
        con.fill();
        //con.moveTo(160, 40); 
        con.lineTo(175, 23); 
        con.lineTo(195, 23); 
        con.lineTo(180, 40); 
        con.lineTo(195, 57); 
        con.lineTo(175, 57); 
        con.lineTo(160, 40);
        con.fill();
        
        con.closePath();
        con.restore();
    }
    function dealclick()//处理敲击事件
    {
        var x = event.clientX;
        var y = event.clientY;
        var flag = getPos(x, y);
        //alert(x.toString() + "  " + y.toString()+"  "+flag.toString());
        if(flag==0)
        return;
    switch (flag)//
    {
        case 1: drawPS(); break;
        case 2: quickOrslow(0); break;
        case 3: quickOrslow(1); break;
    }
    }
    function getPos(x, y) //
    {
       var px=100;
       var py=240;
       x-=px;
       y-=py;
       if (x >= 275 && x <= 325 && y >= 15 && y<= 65)
           return 1;
       if (x >= 130 && x <= 200 && y >= 20 && y <= 60)
           return 2;
       if (x >= 350 && x <= 420 && y >= 20 && y <= 60)
           return 3;
       return 0;
   }
   function quickOrslow(flag) //
   {
       var total = toggle.duration;
       var s = Math.ceil(total*0.05);
       if (flag == 1)//kuaijin
       {
           if (toggle.ended == true)
               return;
           var now = toggle.currentTime;
           if (total - now <= s)
               return;
           else
               toggle.currentTime = now + s;
       }
       else  //后退
       {
           var n = toggle.currentTime;
           if (n < s)
               return;
           else
               toggle.currentTime = n - s;
       }
   }

</script>

      这是全部的源代码,当然其中包含了一些ASP语句,适用于传递歌曲名的,可以不用考虑。

drawPS()是控制播放与暂停的函数,quickOrSlow()是控制快退的函数。
     当然这个播放器是非常简陋的,但是通过加工美化,还是可以做出优秀的播放器的,而且是没有插件的。

Das obige ist der detaillierte Inhalt vonHTML5-Anwendung – Beispielcode-Freigabe für die Implementierung eines einfachen Players. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn