修改flash音樂播放器的部分代碼,使用HTML建立播放清單,單擊播放清單中的項,通過js傳值給flash播放選中的音樂
(flash音樂播放器通過讀取XML檔案載入音樂資訊)
JS代碼:
<head><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><br /><title>無標題文檔</title></p><p><mce:script type="text/javascript"><!--<br />//向flash傳遞參數(修改flash中_root軸上定義的全域參數值)<br />function doSome(val)<br />{<br />getFlash("myFlash").SetVariable("MusicID", val);<br />}</p><p>//擷取Flash對象(相容IE,FF等瀏覽器)<br />function getFlash(name)<br />{<br />if(navigator.appName.indexOf("Microsoft") != -1)<br />{<br />return window[name]<br />}<br />else<br />{<br />return document[name]<br />}<br />}<br />// --></mce:script><br /></head></p><p><body></p><p><object id="myFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="145" height="40"><br /> <!-- 設定palyer2.swf?key=3,flash會在_root軸下自動建立key對象<br />此外:<param name="FlashVars" value="key=1"/>同樣 --><br /> <param name="movie" value="player2.swf" /><br /> <param name="quality" value="high" /><br /> <embed name="myFlash" src="player2.swf" mce_src="player2.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="145" height="40"></embed><br /></object></p><p><!-- 播放清單 --><br /><a href="#" mce_href="#" onclick="doSome(0)">1</a><br /><a href="#" mce_href="#" onclick="doSome(1)">2</a></p><p></body>
註:只有IE可以讀取Param標籤的資訊,FF等只能讀取embed標籤中的資訊,HTML給FLASH傳遞初始值為了相容除了在<param name="movie" value="player2.swf?key=66"/>外,還要在<embed name="myFlash" src="player2.swf?key=66" ... />中定義
AS代碼:
//在_root軸聲明一個對象,接收JS外部傳遞來的新播放音樂ID<br />var MusicID = -1;<br />//記錄當前播放音樂ID<br />var oldMusicID = -1;</p><p>//通過重新整理幀頻,檢查MusicID的值是否改變,如改變執行相關方法,播放指定音樂<br />//聽說可以用監聽對象是否改變的Object.watch("屬性名稱",回調方法),但此方法我實驗失敗%-%<br />title_mc.onEnterFrame = function()<br />{<br />if(_root.oldMusicID != _root.MusicID)<br />{<br />_root.oldMusicID = _root.MusicID;<br />//_root.title_66.text = _root.MusicID;</p><p>pointer_id = _root.MusicID;</p><p>setPlayStatus("play");<br />}<br />}