ホームページ ウェブフロントエンド H5 チュートリアル HTML5 アプリケーション - 単純なプレーヤーを実装するためのサンプル コードの共有

HTML5 アプリケーション - 単純なプレーヤーを実装するためのサンプル コードの共有

Mar 18, 2017 pm 03:24 PM

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

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

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


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

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

&lt;%@language=&quot;javascript&quot; %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;PlayMusic&lt;/title&gt;
&lt;style type=&quot;text/css&quot;&gt;
    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;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1 class=&quot;a&quot;&gt;欢迎使用HTML5播放器&lt;/h1&gt;
&lt;%
    var name = Request.QueryString(&quot;name&quot;);
    if (name == &quot;&quot;)
        name = &quot;&quot;;

    name1 = &quot;save_music\\&quot; + name + &quot;.mp3&quot;;
    //Response.Write(name);
    
 %&gt;
 &lt;marquee behavior=scroll scrolldelay=200 scrollamount=30 width=&quot;300&quot; &gt;&lt;h1&gt;&lt;%=name %&gt;&lt;/h1&gt;&lt;/marquee&gt;
 &lt;p class=&quot;s&quot;&gt;
 &lt;canvas width=&quot;600&quot; height=&quot;60&quot; id=&quot;MusicCanvas&quot;  onclick=&quot;dealclick()&quot;&gt;&lt;/canvas&gt;
&lt;audio id=&quot;music&quot; src=&lt;%=name1 %&gt; controls&gt;
您的浏览器不支持HTML5中的audio标签
&lt;/audio&gt;
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    var c = document.getElementById(&quot;MusicCanvas&quot;);
    var con = c.getContext(&quot;2d&quot;);
    var toggle = document.getElementById(&quot;music&quot;);
    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, &quot;#1FD856&quot;); //
            g.addColorStop(0.8, &quot;black&quot;); //
            toggle.play();
        }
        else //播放状态
        {
            g.addColorStop(0.2, &quot;red&quot;); //黄
            g.addColorStop(0.8, &quot;black&quot;); //
            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 = &quot;grey&quot;;
        con.fillRect(130, 10, 70, 40);
        con.fillStyle = &quot;black&quot;;
        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 = &quot;grey&quot;;
        var x = 350;
        con.fillRect(x, 10, 70, 40);
        x += 70;
        con.fillStyle = &quot;black&quot;;
        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() + &quot;  &quot; + y.toString()+&quot;  &quot;+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 &gt;= 275 &amp;&amp; x &lt;= 325 &amp;&amp; y &gt;= 15 &amp;&amp; y&lt;= 65)
           return 1;
       if (x &gt;= 130 &amp;&amp; x &lt;= 200 &amp;&amp; y &gt;= 20 &amp;&amp; y &lt;= 60)
           return 2;
       if (x &gt;= 350 &amp;&amp; x &lt;= 420 &amp;&amp; y &gt;= 20 &amp;&amp; y &lt;= 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 &lt;= s)
               return;
           else
               toggle.currentTime = now + s;
       }
       else  //后退
       {
           var n = toggle.currentTime;
           if (n &lt; s)
               return;
           else
               toggle.currentTime = n - s;
       }
   }

&lt;/script&gt;
ログイン後にコピー

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

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

以上がHTML5 アプリケーション - 単純なプレーヤーを実装するためのサンプル コードの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

HTML のネストされたテーブル

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTMLの表の境界線

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML 左マージン

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブルのレイアウト

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML 内のテキストの移動

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリスト

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML の onclick ボタン

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML入力プレースホルダー

See all articles