我们有一个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函数呢?

最佳答案

如果您使用的是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函数。

现在,每次您从javascript调用linkClicked时,都会执行as3代码。

10-06 09:00
查看更多