使用javascript检索swf信息

时间:2013-02-18 22:39:19

标签: javascript flash

我需要获得swf“电子学习”电影的一些信息。我需要知道用户已经停止观看和/或用户是否已观看直到结束。我不是在开发LMS,所以我只需要简单的功能。有没有办法从使用JavaScript的闪存中检索此信息?如果是这样,你知道在哪里可以找到一些关于它的文件吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Adobe Flash的ExternalInterface API在Javascript和ActionScript之间进行通信。 浏览器支持: IE 5.0 +,Firefox 1.0 +,Safari 1.3 +,Opera,Chrome(版本N / A但足够老)。 < / p>

Flash TO Javascript Communication;

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 TO Flash Communication;

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文件的object标记中,设置以下参数:

<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.");
}