0

我需要获取有关瑞士法郎“电子学习”电影的一些信息。我需要知道用户停止观看的部分,或者用户是否已经观看到结束。我不是在开发 LMS,所以我只需要简单的功能。有没有办法用javascript从flash中检索这些信息?如果是这样,您知道我在哪里可以找到有关它的一些文档吗?

提前致谢。

4

1 回答 1

1

您可以使用 Adob​​e Flash 的ExternalInterfaceAPI 在 Javascript 和 ActionScript 之间进行通信。浏览器支持: IE 5.0+、Firefox 1.0+、Safari 1.3+、Opera、Chrome(版本不适用,但足够老了)。

Flash TO Javascript 通信;

在您的AS3/Flash 中

function sendToJS(obj:Object):void {
    if (ExternalInterface.available) {
        ExternalInterface.call("onFlashCall", obj);
    }
}

在您的HTML/Javascript中:

<head>
    <script type="text/javascript">
        function onFlashCall(obj) {
            console.log("Data received from Flash: ", obj);
        }
    </script>
</head>

Javascript 到 Flash 通信;

在您的AS3/Flash 中

public function onJavascriptCall(obj:Object):String 
{ 
    console.log("Data received from Javascript: ", obj);
} 
ExternalInterface.addCallback("sendToFlash", onJavascriptCall);

在您的HTML/Javascript中:

<head>
    <script type="text/javascript">
        function sendToFlash(obj) {
            var flashElem = document.getElementById("flashObject");
            flashElem.sendToFlash(obj);
        }
    </script>
</head>

<body>
<!-- Embeded Flash SWF -->
<object id="flashObject"...> 
    ... 
    <embed name="flashObject".../> 
</object>
</body>

重要提示:在 Flash 中,不要出现安全错误:
在包含 HTML 页面的 SWF 文件的对象标记中,设置以下参数:

<param name="allowScriptAccess" value="always" />

在 SWF 文件中,添加以下 ActionScript:

flash.system.Security.allowDomain(sourceDomain);

所以,在你的情况下:

sendToJS()在播放器的相应事件处理程序中调用方法:

protected function onStopClick(event:MouseEvent):void
{
    sendToJS("User has clicked the STOP button.");
}

protected function onPlaybackFinish(event:Event):void
{
    sendToJS("Playback is complete.");
}
于 2013-02-18T23:14:14.850 回答