2010-04-27 51 views
1

我在我的網站上使用以下腳本在Flash中播放mp3。 實例化Flash對象我在一個javascript函數中使用了swfobject框架。當函數被調用時,播放器被創建並添加到頁面中。Javascript - 在包含頁面上查找swfobject並調用javascript函數

該網站的其餘部分是在PHP和頁面調用這個腳本正在包含在PHP包括功能。所有其它使用的腳本是在PHP「master'頁

var playerMp3 = new SWFObject("scripts/player.swf","myplayer1","0","0","0"); 
    playerMp3.addVariable("file","track.mp3"); 
    playerMp3.addVariable("icons","false"); 
    playerMp3.write("player1"); 

    var player1 = document.getElementById("myplayer1"); 
    var status1 = $("#status1"); 

    $("#play1").click(function(){ 
     player1.sendEvent("play","true"); 
     $("#status1").fadeIn(400); 
     player4.sendEvent("stop","false"); 
     $("#status4").fadeOut(400); 
     player3.sendEvent("stop","false"); 
     $("#status3").fadeOut(400); 
     player2.sendEvent("stop","false"); 
     $("#status2").fadeOut(400); 
    }); 
    $("#stop1").click(function(){ 
     player1.sendEvent("stop","false"); 
     $("#status1").fadeOut(400); 
    }); 
    $(".closeOver").click(function(){ 
     player1.sendEvent("stop","false"); 
     $("#status1").fadeOut(400); 
    }); 
    $(".accordionButton2").click(function(){ 
     player1.sendEvent("stop","false"); 
     $("#status1").fadeOut(400); 
    }); 
    $(".accordionButton3").click(function(){ 
     player1.sendEvent("stop","false"); 
     $("#status1").fadeOut(400); 
    }); 
    $(".turnOffMusic").click(function(){ 
     player1.sendEvent("stop","false"); 
     $("#status1").fadeOut(400); 
    }); 
}); 

我有一個播放按鈕與ID爲‘#play1’和停止按鈕與ID爲‘我的網頁上#停止1’。同一頁面上的div具有ID'#status1',並且一個揚聲器的小圖像在div中。 當您按下播放按鈕時,揚聲器的div淡入,當您按下停止按鈕時,帶揚聲器的div淡出,非常簡單。它的工作原理與我想要的一樣。

但問題是,當一首歌完成後,說話者不會淡出。有沒有簡單的解決方案呢?我已經嘗試過使用swfobject框架從頁面中獲取flash播放器並在其上調用'IsPlaying',但是我收到'swfobject'找不到的錯誤。我需要的是向正確的方向推動一下,或者向我展示如何正確地獲取當前正在播放的音頻播放器(在閃存中),檢查它是否正在播放,如果完成,請調用JavaScript函數以引導揚聲器圖像淡化再次。希望這裏的某個人可以幫我

回答

0

由於時間不夠,我們決定在背景中運行一個JS定時器,其長度等於在Flash中播放的MP3的長度。在那時我會將代碼重寫爲swfobject 2.x語法。對這個問題的任何建議仍然歡迎!

1

'swfobject not found'錯誤通常是由於混合了SWFObject 1.5和2.x語法(2.x是完全重寫而不是向後兼容)。請參閱http://learnswfobject.com/advanced-topics/detecting-swfobject-version/

您發佈的代碼使用SWFObject 1.5語法,這意味着您應該通過您的player1變量訪問對SWF的所有引用,如您所寫。

RE:褪色,是你的SWF的揚聲器圖標的一部分?您無法使用CSS/JavaScript「淡出」SWF。在這種情況下,您可以有兩種選擇:

  1. 淡入一個基於HTML的掩碼在SWF中淡出SWF。這可以通過DIV風格來實現,看起來像你的背景。這是tutorial for placing HTML elements over SWFs

  2. 改變SWF以使用內部ActionScript函數淡出揚聲器圖標,並使用ExternalInterface調用該函數。

+0

沒有揚聲器圖標只是一個div內的簡單圖像。 我會嘗試你的建議,並讓你知道。 – Rob 2010-04-28 06:17:10

0

不,圖像不是swf的一部分,我沒有.fla文件,所以我不能把任何代碼放在flash中。

我的問題是;是否有一段JavaScript文件對.swf文件說:當歌曲結束時,淡出揚聲器圖像(頁面中的div)。

順便說一句,羅布是我的兄弟,他正在幫助解決這個問題。

+0

Koen試試這個; var player1 = document.getElementById(「myplayer1」); alert(player1.IsPlaying()); 並讓我們知道發生了什麼。正如pipwerks所說,我們使用1.5語法,所以我們應該能夠通過該變量訪問播放器。 – Rob 2010-04-28 08:40:29

相關問題