首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在闪存中使用ExternalInterface

在闪存中使用ExternalInterface
EN

Stack Overflow用户
提问于 2009-05-03 21:48:34
回答 2查看 19.4K关注 0票数 4

我正在尝试编辑一些flash来进行外部javascript函数调用,但没有成功。下面是我的actionscript 2.0代码:

代码语言:javascript
复制
//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

这是我的javascript;

代码语言:javascript
复制
function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

我见过很多例子,我主要是对ExternalInterface.addCallback的用法感到困惑。我不需要javascript向flash返回任何东西,所以这是必要的吗?

不管是什么原因,我从来没有看到过警报。有没有人看到我的代码中有什么问题?有没有我没有的ExternalInterface库?另外,使用ExternalInterface的最好方法是什么(例如,错误检查等)先谢谢你...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-04 10:20:12

ExternalInterface.addCallback是让javascript能够调用你的Flash应用程序。例如,如果你想要一个启动/停止视频的HTML键,你只需要为一个命名的方法添加一个回调,然后你的js就可以调用FlashObject.callback方法名了。

我要说的是,在应用程序中添加ExternalInterface方法的最好方法是为应用程序中的每个交互用例设置一个负责JS通信的类。例如:

代码语言:javascript
复制
public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

若要更直接地测试ExternalInterface,请尝试调用

代码语言:javascript
复制
ExternalInterface.call("alert", "Hello World!");
票数 7
EN

Stack Overflow用户

发布于 2009-05-08 15:50:26

正如其他人在Johan帖子的评论中所说的那样,您应该首先通过检查ExternalInterface.available来检查外部接口是否可用。

除此之外。如何启动Flex应用程序?首先,它必须包含在一个包装器中,这个包装器当然包含这个JavaScript。这是微不足道的。但是,如果您从本地文件系统(浏览器URL以SWF开头)将其作为文件启动,则还必须确保file://)文件具有运行JavaScript函数所需的权限。

您必须信任SWF文件,才能使其能够访问本地资源,如文件或本地文件上的JS。为此,创建一个类似myapp.cfg的文件,并将文件的路径作为一行添加到该行。将此文件放在FlashPLayerTrust文件夹中。在Linux系统上,这是~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/.。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/818089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档