Flash和Javascript可以通信吗?

时间:2011-02-04 04:52:24

标签: javascript flash actionscript-3 actionscript

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

可以这样做吗?

2 个答案:

答案 0 :(得分:9)

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

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");

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

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

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

function makeActionScriptCall() {
    var flash = document.getElementById(movieName);
    flash.methodName(parametersIfAny);
}

有关详细信息,请参阅:

答案 1 :(得分:5)

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