设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

查看: 3413|回复: 10

[疑问] 音乐连播中提示缺少对象 [复制链接]

Rank: 6Rank: 6

升级  28.5%

注册时间
2004-5-16
在线时间
266 小时
威望
875
阅读权限
70
积分
1570
帖子
837
精华
1
UID
11533
发表于 2006-12-15 19:05:02 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
一键分享 一键分享
以下代码在音乐连播中提示缺少对象,导致连播失败,高手给看看哪出错了。
  1. <html>
  2. <head>
  3. <title>音乐网站全选+反选+连续播放</title>

  4. <script language="javascript" for="MediaPlayerObject" event="playStateChange(NewState)">
  5.   switch (NewState)
  6. {
  7.         case 1:
  8.                 //alert("");
  9.                 break;
  10.         case 2:
  11.                 //alert("Paused");
  12.                 break;
  13.         case 3:
  14.                 //alert("Playing");
  15.                 break;  
  16.          case 8:
  17.                 //alert("stopped");
  18.                 setTimeout("showMusic();",1000);   break;     
  19.         default:
  20.                 //alert(NewState.toString());
  21.                 break;
  22. }


  23. </script>
  24. <script language="javascript">

  25. function MusicClass(form,chkboxName,btn1,btn2,btn3,btn4)
  26. {
  27.         var obj = { SelectAll:btn1, ClearAll:btn2, SelectOther:btn3, PlayMusic:btn4 };
  28.         var box = document.getElementsByName(chkboxName);
  29.        
  30.         Function.prototype.ChkMusic = function ()
  31.         {
  32.                 var me = this;
  33.                 return function ()
  34.                 {
  35.                         for (var i=0;i<box.length;i++)
  36.                         {
  37.                                 me(i);
  38.                         }
  39.                 }
  40.         }

  41.         obj.SelectAll.onclick = function(i){ box[i].checked = true; }.ChkMusic();
  42.         obj.ClearAll.onclick = function(i){ box[i].checked = false; }.ChkMusic();
  43.         obj.SelectOther.onclick = function(i){ box[i].checked = !box[i].checked }.ChkMusic();
  44.        
  45.         obj.PlayMusic.onclick = function ()
  46.         {  var mCount=0;
  47.            var mPath="http://ok.99lover.com/playktv.asp?playid=";
  48.            var mBox=[], mUrl=[],mName=[];

  49.             for (var i=0;i<box.length;i++)
  50.                 {      
  51.                   if (box[i].checked)
  52.                    {
  53.                         mName[mCount]=box[i].nextSibling.data;
  54.                         mUrl[mCount]=mPath+box[i].value;
  55.                         //mBox[mCount]=[mName[mCount],mUrl[mCount]];
  56.                         mCount++;
  57.                     }   
  58.                   }         
  59.       
  60.         // alert("选中歌曲数:"+mCount+"首");alert("音乐地址为:"+mUrl.join(","));
  61.         //alert("音乐名称:"+mName.join(","));alert("音乐信息:"+mBox.join(","));
  62.        if(mCount==0){alert("对不起,至少选择一首才能播放音乐。");}
  63.        mInfo.innerHTML=" 当前共选中"+mCount+" 首歌曲<br> ";
  64.        mList.innerHTML="播放清单 <br>";
  65.        for (i=1;i<=mCount;i++)
  66.             {
  67.               
  68.               mList.innerHTML+="第"+i+"首&nbsp;&nbsp;&nbsp;&nbsp;"+mName[i-1]+"<br>";
  69.               function showMusic()
  70.               {      var player = document.getElementById("MediaPlayerObject");
  71.                      var index=0;
  72.                      player.URL = mUrl[index];
  73.                      //player.Filename = mUrl[index];
  74.                      //alert(player.URL);
  75.                      player.controls.play();
  76.                     index++;
  77.                }
  78.                showMusic();
  79.              }
  80.      
  81.         }
  82. }

  83. window.onload = function ()
  84. {
  85.         MusicClass(document.forms[0],'MusicID',document.all.All,document.all.Clear,document.all.Other,document.all.Play);
  86. }
  87. </script>
  88. </head>
  89. <body>
  90. <form action="PlayMusic.asp" method="get">
  91. <input type='checkbox' name='MusicID' value="12753" />Love Love Love- 蔡依林<br />
  92. <input type='checkbox' name='MusicID' value="10132" />爱的主打歌- 萧亚轩 <br />
  93. <input type='checkbox' name='MusicID' value="10657" />十八湾水路到我家 - 宋祖英 <br />
  94. <input type='checkbox' name='MusicID' value="10006" />眉飞色舞 - 郑秀文<br />
  95. <input type='checkbox' name='MusicID' value="12905" />江南- 林俊杰 <br />
  96. <button id="All">全选</button>
  97. <button id="Clear">全不选</button>
  98. <button id="Other">反选</button>
  99. <button id="Play">播放/连播</button>
  100. </form>


  101. <div id="mArea">
  102.    <object id="MediaPlayerObject" classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" style="width: 300px; height:240 px;">
  103.                         <param name="DisplayBackColor" value="0xffffff">
  104.                         <param name="DisplayForeColor" value="16777215">
  105.                         <param name="rate" value="1">
  106.                         <param name="balance" value="0">
  107.                         <param name="currentPosition" value="0">
  108.                         <param name="defaultFrame" value>
  109.                         <param name="playCount" value="1">
  110.                         <param name="autoStart" value="-1">
  111.                         <param name="currentMarker" value="0">
  112.                         <param name="invokeURLs" value="-1">
  113.                         <param name="baseURL">
  114.                         <param name="volume" value="75">
  115.                         <param name="mute" value="0">
  116.                         <param name="uiMode" value="full">
  117.                         <param name="stretchToFit" value="-1">
  118.                         <param name="windowlessVideo" value="0">
  119.                         <param name="enabled" value="-1">
  120.                         <param name="enableContextMenu" value="-1">
  121.                         <param name="fullScreen" value="0">
  122.                         <param name="SAMIStyle">
  123.                         <param name="SAMILang">
  124.                         <param name="SAMIFilename">
  125.                         <param name="captioningID">
  126.                         <param name="enableErrorDialogs" value="0">
  127.     </object>
  128. </div>

  129. <br>
  130. <div id="mInfo">
  131. 播放信息  ……            
  132. </div>
  133. <br>
  134. <div id="mList">
  135. 歌曲列表清单                  
  136. </div>

  137. </body>
  138. </html>
复制代码运行代码另存代码

Rank: 6Rank: 6

升级  28.5%

注册时间
2004-5-16
在线时间
266 小时
威望
875
阅读权限
70
积分
1570
帖子
837
精华
1
UID
11533
发表于 2006-12-15 23:54:38 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
烦请风云突变、海浪、dorn、宝玉等高人给指点一下,谢谢!

使用道具 举报

Rank: 2

升级  34.67%

注册时间
2006-2-14
在线时间
38 小时
威望
49
阅读权限
20
积分
102
帖子
30
精华
0
UID
46988
发表于 2006-12-29 17:40:02 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
期待!!高手上来指点下啊~~~

使用道具 举报

Rank: 8Rank: 8

升级  0%

注册时间
2005-12-24
在线时间
1722 小时
威望
934
阅读权限
90
积分
3184
帖子
1056
精华
0
UID
44744
发表于 2006-12-29 17:49:44 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
其实连播很简单,用一个数组存取歌曲序号,加一个定时器,随时判断播放器的状态,当发现停止状态的时候数组序号加1,转向下一首歌曲即可

具体的代码,由于工作太忙,没有细看,楼主本人对播放器方面也蛮有研究,可以多参考一些写得比较好的播放器代码,只要你肯研究,必有收获,相信楼主定能顺利解决问题的

使用道具 举报

Rank: 2

升级  18%

注册时间
2006-12-28
在线时间
20 小时
威望
33
阅读权限
20
积分
77
帖子
47
精华
0
UID
63245
发表于 2007-1-9 16:07:45 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
怎么上传附件呀?

使用道具 举报

Rank: 3Rank: 3

升级  29.33%

注册时间
2006-12-18
在线时间
150 小时
威望
91
阅读权限
30
积分
288
帖子
93
精华
0
UID
62998
发表于 2007-1-9 21:32:02 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
帮你顶一下

使用道具 举报

Rank: 1

升级  96%

注册时间
2006-8-21
在线时间
9 小时
威望
26
阅读权限
10
积分
48
帖子
26
精华
0
UID
55598
发表于 2007-1-18 13:32:27 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
你的 showMusic定义在for{;;}里面,setTimeout("showMusic();",1000); 的时候找不到"showMusic";
朱华
QQ:8466645

使用道具 举报

Rank: 2

升级  0.67%

注册时间
2004-11-11
在线时间
8 小时
威望
35
阅读权限
20
积分
51
帖子
15
精华
0
UID
19411
发表于 2009-5-4 11:31:46 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
怎么加定时器?偶是菜鸟.

使用道具 举报

Rank: 4

升级  90.4%

注册时间
2008-6-2
在线时间
315 小时
威望
416
阅读权限
50
积分
952
帖子
444
精华
0
UID
87829
发表于 2009-5-4 11:58:13 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
用wmp的话,问题可能有点多 特别是IE下 先提醒一下,我以前做音乐盒的时候是遇到不少问题

我只写一个核心的代码

  1. try {
  2.         Snail;
  3. } catch(ex) {
  4.         Snail = {};
  5. }
  6. Snail.Player = function(obj,oct) {
  7.     ...........       
  8. }

  9. Snail.Player.prototype.getMediaPlayer = function() {
  10.          return document["mediaplayer"];
  11. }

  12. Snail.Player.prototype.init = function(media,play_mode) {
  13.         ...........
  14. }
  15. /*
  16. * 播放当前歌曲
  17. */
  18. Snail.Player.prototype.play = function() {
  19.     var player = this.getMediaPlayer();
  20.    var me = this;
  21.    if (!this._interval) {
  22.         this._interval = setInterval(function(){
  23.         me.showTime();
  24.         }, 1000);
  25.     }
  26. }

  27. Snail.Player.prototype.showTime = function() {
  28.         var me = this;
  29.        
  30.         var player = this.getMediaPlayer();
  31.        
  32.         if(this.playEnabled() && player.playState == 3) {
  33.                 if (player.controls.currentPosition >= player.currentMedia.duration - 2) {
  34.                         this.stop();
  35.                         setTimeout(function(){
  36.                                 me.next();
  37.                                 me.$syncList();
  38.                         }, 500);
  39.                 }
  40.                 else {
  41.                         if (player.controls.currentPositionString == "") {
  42.                                 this.Doms.playTime.innerHTML = "00:00 | " + player.currentMedia.durationString;
  43.                         }
  44.                         else {
  45.                                 this.Doms.playTime.innerHTML = player.controls.currentPositionString + " | " + player.currentMedia.durationString;
  46.                         }
  47.                 }                       
  48.         }
  49. }
复制代码运行代码另存代码


播放器player.URL = “http://lllxxxxxx”;  就可以播放了
  因为是很久以前做的,所以拿到现在来说可能有点问题,但当时考虑了播放的模式、音量大小控制、支持页面无刷新增加歌曲、删除、自动播放、自动切换播放页面==

一个数组存放的是正常顺序的播放列表--arrInit,另一个为当前播放列表的ID  根据这个ID在arrInit里面找到相应的一些信息如URL等,然后显示  控制播放器播放==
每隔1秒左右去调用一个showTime函数,如果this.playEnabled() && player.playState == 3  而且快要播放完的时候就先stop 然后播放下一首,调用next函数

要注意的问题就是
1、由于网络原因,可能播放的是服务器上的音乐,也有可能是网络上的 所以这首歌曲是否能播放--未知,当超过一断时间还不能播放该如何处理,是跳到下一首还是?
2、列表可能不停的被更新,这里还没有涉及到歌词的问题,如果有歌词的话一个比较麻烦的事情

目前用WMP播放的我见过比较成熟的产品  网易邮箱里面的音乐盒还不错  可以去参考一下,百度的音乐盒也是一个比较好的参考。

使用道具 举报

Rank: 2

升级  0.67%

注册时间
2004-11-11
在线时间
8 小时
威望
35
阅读权限
20
积分
51
帖子
15
精华
0
UID
19411
发表于 2009-5-4 19:14:28 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
先谢谢了。研究下.最近搞音乐频道,所以想自己整代码。呵呵

使用道具 举报

霸王龙

顽童飞翔...

Rank: 6Rank: 6

升级  6.1%

注册时间
2004-10-9
在线时间
443 小时
威望
692
阅读权限
70
积分
1122
帖子
679
精华
0
UID
17979
发表于 2009-5-5 11:35:40 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站
看我签名 可能对你有用 ↓
新作品,音乐微博:http://pyzy.net/t

使用道具 举报

您需要登录后才可以回帖 登录 | 加入无忧

Archiver|手机版|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445  

GMT+8, 2012-5-17 23:37 , Processed in 0.065293 second(s), 15 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 1999-2011 无忧脚本

回顶部