Flash和Javascript可以通信吗?

And*_*Hin 4 javascript flash actionscript actionscript-3

我正在开发一个使用闪存套接字的聊天应用程序.我不想在flash中编写整个界面,所以我希望只使用flash与socketserver通信并调用js来修改dom.

可以这样做吗?

Man*_*qui 9

要从Flash调用JavaScript函数,请使用ExternalInterface.callActionScript中的函数:

import flash.external.ExternalInterface;

// Call a JavaScript function
ExternalInterface.call("your_javascript_function");

// Get a return value from a JavaScript function
var x:int = ExternalInterface.call("get_x");

// Pass an argument to a JavaScript function
var retval:int = ExternalInterface.call("some_js_function", "the-argument");
Run Code Online (Sandbox Code Playgroud)

要从JavaScript调用ActionScript函数,请首先ExternalInterface.addCallback在ActionScript中使用该函数:

// "methodName" is the method to call in JavaScript
// instanceObject.realMethod is the method that will be triggered
var successful = ExternalInterface.addCallback("methodName",
                                               instanceObject,
                                               realMethod);
Run Code Online (Sandbox Code Playgroud)

然后,在JavaScript中获取SWFObject的句柄并调用ActionScript方法,如下所示:

function makeActionScriptCall() {
    var flash = document.getElementById(movieName);
    flash.methodName(parametersIfAny);
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:

  • ExternalInterface.call( "your_javascript_function"); 已经足够调用该函数,你不需要在字符串中添加(). (2认同)

Jac*_*cob 5

使用ExternalInterface对象让ActionScript能够调用JavaScript函数,反之亦然.