【问题标题】:flash as3 player in IEIE中的flash as3播放器
【发布时间】:2011-12-15 18:12:36
【问题描述】:

我正在尝试创建一个简单的音频 Flash 播放器,它在点击时调用一个 js 函数,它可以在除 IE 之外的所有浏览器中完美运行。我无法弄清楚似乎是什么问题!

这里是html:

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <meta http-equiv="Content-Type" content="text/html;  charset=ISO-8859-1" />
    <title>player</title>
    </head>
    <body >

    <![if !IE]>
    <object type="application/x-shockwave-flash" classid="bla" width="18" height="30"               id="myFlashMovie"> 
<param name="wmode" value="opaque" />   
<param name="FlashVars" value="mp3.mp3" />
<embed type="application/x-shockwave-flash" width="18" height="30"      src="player%2Eswf" id="flashObj" FlashVars="audioTrackPath=mp3%2Emp3" />
    </object>
    <![endif]>

    <!--[if IE]>
    <object type="application/x-shockwave-flash" classid="clsid:d27cdb6e-ae6d-11cf-  96b8-444553540000" width="18" height="30" id="movie" allowScriptAccess="sameDomain" >
    <PARAM NAME="movie" id="movie" value="player%2Eswf?audioTrackPath=mp3%2Emp3"/>
<PARAM NAME="FlashVars" value="mp3%2Emp3" />
<PARAM NAME="allowScriptAccess" value="always" />   
    <![endif]-->    


    <script type="text/javascript">
    alert("Hello World");
    </script>
    <noscript>Sorry, your browser does not support JavaScript!</noscript>

    <script type="text/javascript">
    function countdown() {
            alert("countdown");
                }
    </script>   
    </body>
    </html>

这里是:

    import flash.media.Sound;
    import flash.media.SoundLoaderContext;
    import flash.net.URLRequest;
    flash.system.Security.allowDomain("http://localhost");



    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
    var audioTrackPath:String = String(paramObj['audioTrackPath']);


    stop();
    play_btn.addEventListener(MouseEvent.CLICK, playSound);

    function playSound (e:MouseEvent):void{
try {
    ExternalInterface.call("countdown");
    } catch(e:Error) {
    trace(e)
    }
//ExternalInterface.call("countdown");
gotoAndStop(2);
var soundClip:Sound; 
var soundChannel:SoundChannel = new SoundChannel();

function init() {
    soundClip = new Sound();
    soundClip.addEventListener(ProgressEvent.PROGRESS, soundLoading);
    soundClip.addEventListener(Event.COMPLETE, soundLoaded);

    var req:URLRequest = new URLRequest(audioTrackPath);
    var context:SoundLoaderContext = new SoundLoaderContext(1000, true);
    soundClip.load(req,context);
    //soundChannel = soundClip.play();
}

init();

function soundLoaded(e:Event) {
    soundChannel = soundClip.play();

}

function soundLoading(e:ProgressEvent) {
// preloader information goes here
    trace(String(int(100*e.bytesLoaded / e.bytesTotal))+"%");
}

stop_btn.addEventListener(MouseEvent.CLICK, stopSound);
    function stopSound (e:MouseEvent):void{
    gotoAndStop(1);
    soundChannel.stop();
}   
}

我已经在谷歌上搜索了 3 天,但我似乎找不到答案...

【问题讨论】:

    标签: actionscript-3 internet-explorer flash


    【解决方案1】:

    您应该首先说明问题是 ExternalInterface.call() 不起作用。

    只用外部接口调用构建一个简单的项目

    if(ExterlInterface.available){
        ExternalInterface.call('alert','ExterlInterface.available');
    }
    

    在第一帧(如果您使用 Flash)并发布它

    它会给你以下html

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>ei</title>
    </head>
    <body bgcolor="#ffffff">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="ei" align="middle">
        <param name="allowScriptAccess" value="sameDomain" />
        <param name="allowFullScreen" value="false" />
        <param name="movie" value="ei.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />  <embed src="ei.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="ei" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
        </object>
    </body>
    </html>
    

    如果失败,那么是您的浏览器造成了问题,对我来说可以正常工作。 如果它正常工作,那么你的 html 就是坏的。

    【讨论】:

    • 一百万谢谢你,我让它在截止日期前工作:)
    【解决方案2】:

    似乎您在对象定义中缺少电影参数。不同的浏览器使用不同的标签来获取 Flash 信息 - 有些使用 embed,有些使用 object。

    试试这个 html

        <object type="application/x-shockwave-flash" classid="bla" width="18" height="30"               id="myFlashMovie"> 
    <param name="movie" value="player.swf">
    <param name="wmode" value="opaque" />   
    <param name="FlashVars" value="mp3.mp3" />
    <embed type="application/x-shockwave-flash" width="18" height="30"      src="player.swf" id="flashObj" FlashVars="audioTrackPath=mp3.mp3" />
        </object>
    

    我也会将文件引用直接放在 url 中

    <param name="movie" value="player.swf?audioTrackPath=mp3.mp3">
    

    【讨论】:

    • 我认为你误读了我的问题,我需要 IE 部分才能工作,第一部分工作正常。该播放器在 IE 中工作,但我似乎无法让它调用 js!你说的我都做了,还是没有改善!
    【解决方案3】:

    替换这个:

    <param name="FlashVars" value="mp3.mp3" />
    

    有了这个:

    <param name="FlashVars" value="audioTrackPath=mp3.mp3" />
    

    FlashVar 是名称-值对。

    Ognjen,不要误会,但作为建议,下次您可以花一些精力校对代码,而不是“用 Google 搜索 3 天”。

    【讨论】:

    • 我认为你误读了我的问题,我需要 IE 部分才能工作,第一部分工作正常。该播放器在 IE 中工作,但我似乎无法让它调用 js!我按照你说的做了,还是没有改善! ——
    【解决方案4】:

    看来您应该将您的 classid 从 bla 更改为 clsid:d27cdb6e-ae6d-11cf-96b8-444553540000
    还可以查看我类似的opensource project(但在 IE 6 中不起作用,但在较新版本中很好)

    【讨论】:

    • 谢谢,但我的 classid 是 clsid:d27cdb6e-ae6d-11cf-96b8-444553540000 。我仍然尝试更改它,但没有运气。还有其他想法吗?
    • @Ognjen Božičković - 你的 ie 版本是什么?单击www0z0k.narod.ru(我的项目演示页面)上的链接会导致播放音频并更改您的ie中的链接颜色吗?也尝试将一些参数传递给你的 js 函数
    • 你的页面在我的 ie8 中工作,我会尝试传递一些参数,也许这会成功!谢谢你的想法,如果你想到别的,就发布吧:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    相关资源
    最近更新 更多