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

相关问题