通过JavaScript访问Flash Media播放事件和方法

时间:2013-02-06 12:54:43

标签: flash events adobe osmf

有人知道Flash Media Playback是否支持某些API,因为我需要通过javascript来处理一些方法/事件,如:

  1. 播放
  2. 暂停
  3. 停止
  4. 流式传输已结束
  5. 开始流媒体
  6. 流式传输错误
  7. 我需要像Grab Player那样的所有东西。但docs表示我们必须实施它。 谢谢!

    P.S。基本的FMP实施如下:

      <object width="600" height="409"> <param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param><param name="flashvars" value="src=http%3A%2F%2Fosmf.org%2Fvideos%2Fcathy2.flv&poster=http%3A%2F%2Fosmf.org%2Fimages%2Fposter_cathy_fmp.jpg"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="409" flashvars="src=http%3A%2F%2Fosmf.org%2Fvideos%2Fcathy2.flv&poster=http%3A%2F%2Fosmf.org%2Fimages%2Fposter_cathy_fmp.jpg"></embed></object>
    

1 个答案:

答案 0 :(得分:1)

Flash Media Playback支持与Strobe Media Playback相同的功能,但是Strobe存在的javascript api一直是探索性的,所以我不相信它在FMP中有任何支持。

尽管如此,FMP采用与Strobe相同的插件架构,因此您应该能够使用OSMF并以与strobe相同的方式为其创建插件。我为Strobe创建了一个插件,目的是延伸Strobe的javascript api。你可以在FMP中做类似的事情。我是这样做的:

        private function onFullScreen(event:FullScreenEvent):void
    {
        if (event.fullScreen) {
            call([this.javascriptCallback, ExternalInterface.objectID, "fullscreen", true]);
        } else {
            call([this.javascriptCallback, ExternalInterface.objectID, "fullscreen", false]);
        }
    }

    private static function call(args:Array, async:Boolean = true):void
    {       
        if (async)
        {
            var asyncTimer:Timer = new Timer(10, 1);    
            asyncTimer.addEventListener(TimerEvent.TIMER, 
                function(event:Event):void
                {
                    asyncTimer.removeEventListener(TimerEvent.TIMER, arguments.callee);
                    ExternalInterface.call.apply(ExternalInterface, args);
                }
            );  
            asyncTimer.start();
            return;
        }
        ExternalInterface.call.apply(ExternalInterface, args);
    }
}

请参阅:github

如果可以的话,我会放弃FMP。 FMP的文档几乎不存在,并且Strobe中对javascript的支持非常好。如果您有兴趣,我已经记录了Strobe javascript api here