歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> HTML5應用——簡易播放器

HTML5應用——簡易播放器

日期:2017/3/1 10:32:39   编辑:Linux編程

如今HTML已經是比較熱門的了,各種關於HTML5的應用程序、游戲、應用商店等也如火如荼的展開了。各大主流浏覽器也紛紛開始支持HTML5標准,以備打贏新的一輪浏覽器大戰。

話不多說,不知道大家有沒有發現,可以用比較新的版本的谷歌浏覽器直接打開.mp3格式的音樂。自己可以試試:

這是用谷歌浏覽器直接打開mp3文件的情況。 其實,許多新的浏覽器都開始支持HTML5中<audio> <video>標簽,使得一些格式的流媒體可以擺脫對插件的依賴。 下面我就以<audio>標簽做一個簡易的音樂播放器.

<audio>控件可以通過一些內置的JavaSceipt函數和特性進行控制,以及進行二次開發。例如load()、play()、pause()等控制音頻播放的函數,paused、ended、currentTime、startTime等屬性等.

對於這個簡易播放器具有播放\暫停、快進、快退等功能,結合<canvas>對象繪制圖形

  1. <%@language="javascript" %>
  2. <html>
  3. <head>
  4. <title>PlayMusic</title>
  5. <style type="text/css">
  6. div.s{position:absolute;left:100px;top:200px;width:600px;}
  7. audio{width:600px;position:absolute;left:0px;top:100px;}
  8. canvas{position:absolute;left:0px;top:40px;}
  9. marquee{position:absolute;left:250px;top:180px;}
  10. h1{color:Red;}
  11. h1.a{color:Green;position:absolute;left:200px;top:50px;}
  12. </style>
  13. </head>
  14. <body>
  15. <h1 class="a">歡迎使用HTML5播放器</h1>
  16. <%
  17. var name = Request.QueryString("name");
  18. if (name == "")
  19. name = "";
  20. name1 = "save_music\\" + name + ".mp3";
  21. //Response.Write(name);
  22. %>
  23. <marquee behavior=scroll scrolldelay=200 scrollamount=30 width="300" ><h1><%=name %></h1></marquee>
  24. <div class="s">
  25. <canvas width="600" height="60" id="MusicCanvas" onclick="dealclick()"></canvas>
  26. <audio id="music" src=<%=name1 %> controls>
  27. 您的浏覽器不支持HTML5中的audio標簽
  28. </audio>
  29. </div>
  30. </body>
  31. </html>
  32. <script type="text/javascript">
  33. var c = document.getElementById("MusicCanvas");
  34. var ccon = c.getContext("2d");
  35. var toggle = document.getElementById("music");
  36. drawPS();
  37. drawQuick();
  38. function drawPS() //flag=1表示播放命令,flag=0表示暫停
  39. {
  40. con.save();
  41. con.beginPath();
  42. var g = con.createRadialGradient(275, 30, 0, 275, 30, 25); //創建漸變顏色
  43. if (toggle.paused) //暫停狀態
  44. {
  45. g.addColorStop(0.2, "#1FD856"); //
  46. g.addColorStop(0.8, "black"); //
  47. toggle.play();
  48. }
  49. else //播放狀態
  50. {
  51. g.addColorStop(0.2, "red"); //黃
  52. g.addColorStop(0.8, "black"); //
  53. toggle.pause();
  54. }
  55. con.fillStyle = g;
  56. con.arc(275, 30, 25, 0, Math.PI * 2, true);
  57. con.fill();
  58. con.closePath();
  59. con.restore();
  60. }
  61. function drawQuick() //
  62. {
  63. con.save();
  64. con.beginPath();
  65. con.fillStyle = "grey";
  66. con.fillRect(130, 10, 70, 40);
  67. con.fillStyle = "black";
  68. 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);
  69. con.fill();
  70. 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);
  71. con.fill();
  72. con.closePath();
  73. con.beginPath();
  74. con.fillStyle = "grey";
  75. var x = 350;
  76. con.fillRect(x, 10, 70, 40);
  77. x += 70;
  78. con.fillStyle = "black";
  79. 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);
  80. x -= 30;
  81. 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);
  82. con.fill();
  83. //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);
  84. con.fill();
  85. con.closePath();
  86. con.restore();
  87. }
  88. function dealclick()//處理敲擊事件
  89. {
  90. var x = event.clientX;
  91. var y = event.clientY;
  92. var flag = getPos(x, y);
  93. //alert(x.toString() + " " + y.toString()+" "+flag.toString());
  94. if(flag==0)
  95. return;
  96. switch (flag)//
  97. {
  98. case 1: drawPS(); break;
  99. case 2: quickOrslow(0); break;
  100. case 3: quickOrslow(1); break;
  101. }
  102. }
  103. function getPos(x, y) //
  104. {
  105. var px=100;
  106. var py=240;
  107. x-=px;
  108. y-=py;
  109. if (x >= 275 && x <= 325 && y >= 15 && y<= 65)
  110. return 1;
  111. if (x >= 130 && x <= 200 && y >= 20 && y <= 60)
  112. return 2;
  113. if (x >= 350 && x <= 420 && y >= 20 && y <= 60)
  114. return 3;
  115. return 0;
  116. }
  117. function quickOrslow(flag) //
  118. {
  119. var total = toggle.duration;
  120. var s = Math.ceil(total*0.05);
  121. if (flag == 1)//kuaijin
  122. {
  123. if (toggle.ended == true)
  124. return;
  125. var now = toggle.currentTime;
  126. if (total - now <= s)
  127. return;
  128. else
  129. toggle.currentTime = now + s;
  130. }
  131. else //後退
  132. {
  133. var n = toggle.currentTime;
  134. if (n < s)
  135. return;
  136. else
  137. toggle.currentTime = n - s;
  138. }
  139. }
  140. </script>

這是全部的源代碼,當然其中包含了一些ASP語句,適用於傳遞歌曲名的,可以不用考慮。

drawPS()是控制播放與暫停的函數,quickOrSlow()是控制快退的函數。

當然這個播放器是非常簡陋的,但是通過加工美化,還是可以做出優秀的播放器的,而且是沒有插件的。

Copyright © Linux教程網 All Rights Reserved