我们有一个Adobe AIR应用程序,有时会加载一个网页。在其中一个网页上有一个超链接。单击超链接时,我想要调用AS3函数。我知道如何在单击超链接时调用JavaScript函数,但在JavaScript函数中如何调用我的AS3函数?
在所有示例中,我都可以发现Flash是网页上的SWF,因此位于DOM元素中。所以在代码示例中,他们在DOM元素上调用AS3函数,如下所示:
function sendTextToAS3() {
var Txt = document.getElementById('htmlText').value;
var flash = document.getElementById("as3_js");
flash.sendTextFromJS(Txt);
document.getElementById('htmlText').value = "";
}
但在我的情况下,Flash不是DOM元素中的SWF,而是Flash是整个Adobe Air应用程序,并且没有带SWF的DOM元素。那么,如果我不能通过DOM元素来调用我的AS3函数呢?
答案 0 :(得分:0)
如果您使用mx:HTML
组件来显示您的html页面。然后你可以使用以下方法从javascript调用as3函数:
在html页面中,定义回调函数:
var linkClicked = function () {}
在as3代码中,定义回调函数:
function linkClicked():void {
// Your logic here
}
在as3代码中,覆盖回调函数的定义:
// var html:HTML = new HTML();
// load page ...
// when the page is loaded
html.domWindow.linkClicked = linkClicked;
为简单起见,javascript linkClicked
函数在window对象上定义。
现在,每次从javascript调用linkClicked
时都会执行as3代码。
答案 1 :(得分:-1)
查看 ExternalInterface API 。请参阅http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#includeExamplesSummary
上的文档示例