如何从Adobe AIR中的Javascript访问Actionscript

时间:2009-04-16 02:38:59

标签: air

我有一个用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()     at actionscript / initialize()     在mx.managers :: SystemManager / http://www.adobe.com/2006/flex/mx/internal::childAdded()     在mx.managers :: SystemManager / initializeTopLevelWindow()     在mx.managers :: SystemManager / http://www.adobe.com/2006/flex/mx/internal::docFrameHandler()     在mx.managers :: SystemManager / docFrameListener()

任何想法意味着什么?

2 个答案:

答案 0 :(得分:0)

  

您必须使用air.trace,其中air是实用程序AS包的预定义Javascript包装。

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

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

答案 1 :(得分:0)

有关于此的文档,请访问: http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7ed9.html

确保使用acompc编译:

  

注意:编译ActionScript SWF   库用作HTML的一部分   在AIR中的页面,使用acompc编译器

而且......因为你正在使用Alert类......它取决于Flex Framework。确保编译swf时。你在整个框架中编译。 (即确保-static-link-runtime-shared-libraries=true