如何从AdobeAIR应用程序内的网页调用AS3代码

How to call AS3 code from a web page inside an Adobe AIR application?

本文关键字:网页 调用 AS3 代码 AdobeAIR 应用程序      更新时间:2023-11-09

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

  1. 在html页面中,定义回调函数:

    var linkClicked = function () {}
    
  2. 在as3代码中,定义回调函数:

    function linkClicked():void {
        // Your logic here
    }
    
  3. 在as3代码中,覆盖回调函数的定义:

    // var html:HTML = new HTML();
    // load page ...
    // when the page is loaded
    html.domWindow.linkClicked = linkClicked;
    

为了简单起见,javascript linkClicked函数是在窗口对象上定义的。

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

查看ExternalInterface API。请参阅以下文档中的示例:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#includeExamplesSummary