我有一个用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()
任何想法意味着什么?
答案 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
)