如何在AdobeAIR中从Javascript访问Actionscript

如何在AdobeAIR中从Javascript访问Actionscript,air,Air,我有一个用html/javascript编写的AIR应用程序,我想使用Actionscript打印功能,但我没有使用Actionscript for AIR的经验 我应该把Actionscript代码放在哪里?它是进入mxml文件还是需要编译成Flash应用程序。我应该把它放在哪里,如何将它包含到html文档中?最后,如何从Javascript调用AS函数 ====更新===== 我知道我必须使用mxmlc将.mxml或.as文件编译成.swf,我的.as文件中有以下内容: package {

我有一个用html/javascript编写的AIR应用程序,我想使用Actionscript打印功能,但我没有使用Actionscript for AIR的经验

我应该把Actionscript代码放在哪里?它是进入mxml文件还是需要编译成Flash应用程序。我应该把它放在哪里,如何将它包含到html文档中?最后,如何从Javascript调用AS函数

====更新=====

我知道我必须使用mxmlc将.mxml或.as文件编译成.swf,我的.as文件中有以下内容:

package {
    import mx.controls.Alert;
    public class HelloWorld {
        public function HelloWorld():void {
            trace("Hello, world!");
        }
    }
}
或者,在.mxml文件中:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
       import mx.controls.Alert;

           public function HelloWorld():void {
               Alert.show("hello world!");
               trace("Hello, world!");
           }
        ]]>
    </mx:Script>
</mx:Application>

这可以编译,但当我将其包含在html文件中时:

<script src="actionscript.swf" type="application/x-shockwave-flash"></script>

我得到以下错误:

TypeError:错误#1009:无法访问空对象引用的属性或方法。 在mx.managers::FocusManager/activate()中 在mx.managers::SystemManager/activateForm()处 在mx.managers::SystemManager/activate()处 在mx.core::Application/initManagers()中 在mx.core::Application/initialize()中 在actionscript/initialize()处 在mx.managers::SystemManager/ 在mx.managers::SystemManager/initializeTopLevelWindow()处 在mx.managers::SystemManager/ 在mx.managers::SystemManager/docFrameListener()处

你知道那是什么意思吗

您必须使用
air.trace
,其中
air
是一个预定义的Javascript包装器,它覆盖了实用程序包

我假设您正在使用HTML/AJAX进行AIR开发

但是,否则,您需要使用ExternalInterface使AS函数可用于JS。你能告诉我们你为什么需要这个吗

您必须使用
air.trace
,其中
air
是一个预定义的Javascript包装器,它覆盖了实用程序包

我假设您正在使用HTML/AJAX进行AIR开发


但是,否则,您需要使用ExternalInterface使AS函数可用于JS。你能告诉我们你为什么需要这个吗?

关于这个的文档可以在以下网址找到:

确保使用acompc编译:

注意:要编译ActionScript SWF 作为HTML的一部分使用的库 在空中翻页,使用acompc编译器


而且。。。由于您正在使用警报类。。。这取决于Flex框架。确保在编译swf时。您可以在整个框架中编译。(即,确保
-static link runtime shared libraries=true

在以下位置可以找到关于此的文档:

确保使用acompc编译:

注意:要编译ActionScript SWF 作为HTML的一部分使用的库 在空中翻页,使用acompc编译器


而且。。。由于您正在使用警报类。。。这取决于Flex框架。确保在编译swf时。您可以在整个框架中编译。(即确保
-static link runtime shared libraries=true

你是说我可以直接从JS使用AS函数,而无需将actionscript编译成flash?你是说我可以直接从JS使用AS函数,而无需将actionscript编译成flash?