【问题标题】:How to call AS3 code from a web page inside an Adobe AIR application?如何从 Adob​​e AIR 应用程序内的网页调用 AS3 代码?
【发布时间】:2016-03-31 21:08:31
【问题描述】:

我们有一个有时会加载网页的 Adob​​e 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 是整个 Adob​​e Air 应用程序,没有带有 SWF 的 DOM 元素。那么如果我不能通过 DOM 元素来调用我的 AS3 函数,我该怎么称呼它呢?

【问题讨论】:

标签: javascript actionscript-3 air


【解决方案1】:

如果您使用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 代码。

【讨论】:

    【解决方案2】:

    【讨论】:

    • ExternalInterface 不是 Ryan 需要的。这正是他给出的不起作用的示例,因为他没有在 HTML 页面中嵌入 SWF,他将 HTML 页面加载到 AIR 应用程序中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2012-03-25
    • 2017-11-17
    相关资源
    最近更新 更多