代码之家  ›  专栏  ›  技术社区  ›  Rob

javascript-在包含的页面上查找swfobject并调用javascript函数

  •  1
  • Rob  · 技术社区  · 14 年前

    我在我的网站上使用以下脚本在Flash中播放MP3。 为了实例化flash对象,我在javascript函数中使用了swfobject框架。当调用函数时,将创建播放器并将其添加到页面中。

    网站的其余部分使用PHP,调用此脚本的页面包含在php include函数中。所有其他使用的脚本都在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_trade的播放按钮和一个带有id__stop1_的停止按钮。同一页上的DIV具有ID__status1_,DIV中有一个扬声器的小图像。 当你按下播放按钮时,带扬声器的DIV淡入,当你按下停止按钮时,带扬声器的DIV淡出,非常简单。它按我想要的方式工作。

    但问题是,当一首歌结束时,扬声器不会淡出。有没有一个简单的解决方案?我已经尝试使用swfobject框架从页面中获取Flash播放器,并在其上调用__isplaying_,但我得到了__swfobject_________我只需要朝正确的方向推一下,或者举一个例子,告诉我如何正确地获得当前正在播放的音频播放器(在flash中),检查它是否正在播放,如果播放完毕,调用一个javascript函数来引导扬声器图像再次淡出。希望这里有人能帮助我

    3 回复  |  直到 14 年前
        1
  •  1
  •   pipwerks    14 年前

    “swfobject not found”错误通常是由于swfobject 1.5和2.x语法混合造成的(2.x是完全重写的,不向后兼容)。见 http://learnswfobject.com/advanced-topics/detecting-swfobject-version/

    您发布的代码使用了swfobject 1.5语法,这意味着应该通过 player1 变量,如您所写。

    回复:衰落,扬声器图标是你SWF的一部分吗?你不能用css/javascript“淡出”SWF。在这种情况下,您有两种选择:

    1. 在SWF上淡入基于HTML的遮罩,使SWF看起来淡出。这可以通过一个类似于您的背景的DIV来实现。这里有一个 tutorial for placing HTML elements over SWFs .

    2. 使用内部actionscript函数更改SWF以淡出扬声器图标,并使用外部接口调用该函数。

        2
  •  0
  •   Koen    14 年前

    不,图像不是SWF的一部分,我没有.fla文件,所以我不能在flash中放置任何代码。

    我的问题是,是否有一段javascript对.swf文件说:当一首歌完成时,将扬声器图像(在页面的一个分区中)淡出。

    顺便说一句,Rob是我的兄弟,他正在帮助解决这个问题。

        3
  •  0
  •   Rob    14 年前

    因为时间不够,我们决定在后台运行JS计时器,其长度等于Flash中MP3播放的长度。稍后,我将把代码重写为swfobject 2.x语法。对这个问题的任何建议仍然欢迎!