我正在尝试编辑一些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;
function createPlaylist(mess){
alert("called createPlaylist: " + mess);
}我见过很多例子,我主要是对ExternalInterface.addCallback的用法感到困惑。我不需要javascript向flash返回任何东西,所以这是必要的吗?
不管是什么原因,我从来没有看到过警报。有没有人看到我的代码中有什么问题?有没有我没有的ExternalInterface库?另外,使用ExternalInterface的最好方法是什么(例如,错误检查等)先谢谢你...
发布于 2009-05-04 10:20:12
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!");发布于 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/.。
https://stackoverflow.com/questions/818089
复制相似问题