javascript - Flash AS2.0 与 JavaScript/jQuery (ExternalInterface) 通信

标签 javascript flash actionscript-2 externalinterface

我正在尝试使用 JS 通过 ExternalInterface 将数据发送到我的 Flash AS2.0 音乐播放器,但我找不到关于 ExternalInterface 的好的教程或指南。我希望能够通过单击 JavaScript 链接更改播放器中的当前歌曲,并在不单击的情况下加载页面/窗口,播放默认歌曲。

我不需要关于在 Flash 中加载声音等的 super 复杂的答案,我只是在让 JS 将任何东西发送到 Flash 时遇到很多困难,当我让它工作时 - 我是否需要放一些如果/else 进入 flash 判断链接是否被点击?

谢谢

现在在此处编辑代码:

AS 2.0

import flash.external.ExternalInterface;

ExternalInterface.addCallback('loadSong', null, flashFunction);

function flashFunction (val) {
    extra = val;
}

JavaScript

var flashObj = document.getElementById('VSPLAYER');

function loadSong(val) {
    return val
}

HTML

<a href="javascript:loadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
<param name="movie" value="vs_player.swf" />
<param name="allowscriptaccess" value="always" />
</object>

最佳答案

在你的 Flash 中,最好是在第一帧,把这个:

ExternalInterface.addCallback('callFlashFunction', null, yourFlashFunction);

function yourFlashFunction (arg1, arg2) { ... }

在您的 Javascript 中,您可以通过以下方式调用它:

var flashObj = document.getElementById ('FlashObjID');
flashObj.callFlashFunction (arg1, arg2);

如果您的 SWF 位于不同的域中,请记住通过以下方式允许脚本访问:

<object id="FlashObjID"> ... <param name="allowscriptaccess" value="always" /> ... </object>

更新(基于您的 HTML):

<a href="#" onclick="return jsLoadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
    <param name="movie" value="vs_player.swf" />
    <param name="allowscriptaccess" value="always" />
</object>

<script type="text/javascript">
    var flashObj = document.getElementById ('VSPLAYER');
    function jsLoadSong (val)
    {
        flashObj.loadSong (val);
        return false; // to prevent default link action
    }
</script>

我试图阐明名称以显示哪些是 Javascript 中的,哪些是与 Flash 相关的。另请注意,在调用定义 flashObj 之前,您需要等到加载 DOM。 .在这里,<script>标签在 <object> 之后, 所以它会正常工作。

关于javascript - Flash AS2.0 与 JavaScript/jQuery (ExternalInterface) 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019047/

相关文章:

javascript - 如何通过 Twitter API 在删除推文时收到通知?

javascript - 如何使用 jQuery 系统地更改 Twitter.com 上所有头像图像的 src 属性?

Javascript函数用于在特定位置播放Flash文件

flash - 如何在 ScrollPane 内显示工具提示而不让 Flash 8 隐藏工具提示?

javascript - 如何在可点击的 Flash 横幅上使用 Google Analytics _trackEvent?

javascript - ajax调用成功后如何关闭浏览器中当前打开的选项卡

flash - 加密 as3 flash .swf

flash - 服务器端 ActionScript 3.0

flash - SCORM 1.2 cmi.suspend_data

javascript - Firebase 函数 onWrite 未被调用