在Flash中使用外部接口
我试图编辑一些flash来进行外部javascript函数调用,但没有成功。以下是我的actionscript 2.0代码:在Flash中使用外部接口,flash,actionscript,externalinterface,Flash,Actionscript,Externalinterface,我试图编辑一些flash来进行外部javascript函数调用,但没有成功。以下是我的actionscript 2.0代码: //testing external .js calls import flash.external.ExternalInterface; //attempting to make external js call ExternalInterface.call("createPlaylist","It's my Life!"); 这是我的javascript fu
//testing external .js calls
import flash.external.ExternalInterface;
//attempting to make external js call
ExternalInterface.call("createPlaylist","It's my Life!");
这是我的javascript
function createPlaylist(mess){
alert("called createPlaylist: " + mess);
}
我看过很多例子,主要是对ExternalInterface.addCallback
的用法感到困惑。我不需要javascript向flash返回任何内容,所以这是必要的吗
不管什么原因,我从来没有看到过警报。有人看到我的代码有问题吗?是否有我没有的
ExternalInterface
库?另外,使用ExternalInterface
(即:错误检查等)的最佳方式是什么?ExternalInterface.addCallback是为了让javascript能够调用到您的Flash应用程序中。例如,如果您想要一个启动/停止视频的HTML按钮,只需添加一个命名方法的回调,您的js就可以调用[FlashObject].callback方法名
我想说,在应用程序中添加ExternalInterface方法的最佳方法是为应用程序中的每个交互案例设置一个负责JS通信的类。例如:
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,请尝试调用ExternalInterface.call("alert", "Hello World!");
正如其他人在Johan的帖子评论中所说,您应该首先通过检查ExternalInterface.available来检查外部接口是否可用 除此之外。。。如何启动Flex应用程序?首先,它必须包含在包含此JavaScript的包装器中。那是微不足道的。但是,如果您从本地文件系统以文件的形式启动它(浏览器URL以file:///开头),那么您还必须确保SWF文件具有运行JavaScript函数所需的权限
您必须信任SWF文件,使其能够访问本地资源,如文件或本地文件上的JS。为此,创建一个类似myapp.cfg的文件,并将文件路径作为单行添加到此行。将此文件放在FlashPLayerTrust文件夹中。在Linux系统上,这是~/.macromedia/Flash_Player/#Security/FlashPlayerTrust/谢谢,我以为回调方法就是为了这个。关于为什么我没有看到警报(在我的代码中)有什么想法吗?请尝试跟踪ExternalInterface.available属性。它会告诉您闪存是否在允许已终止呼叫的容器中运行。用这样的东西读更多@//测试external.js调用import flash.external.ExternalInterface//外部接口可用吗?var isAvailable:Boolean=ExternalInterface.available;微量元素(可利用);运行此操作时,我应该查找什么?抱歉,我不知道如何发布代码。有人能读懂吗?你应该看看“可用”是真是假。如果不是,那就是你的问题。