似乎OpenLaszlo可以run on AIR。不太明显的是OpenLaszlo应用程序是否可以使用特定于AIR的API,例如文件系统访问。如果是这样,这究竟是怎么做到的?
答案 0 :(得分:2)
虽然我没有任何细节,但您链接的文章提到他的应用程序窗口可以拖动和关闭。那些是AIR-only API(参见NativeWindow类),所以你可能会在某种程度上提出你所要求的内容。
然而,我的理解是OpenLaszlo试图不实现可以在Flash中完成的事情而不是(比如说)DHTML,因此如何处理本地文件访问等事情可能不那么明显。您可能希望下载文章中链接的源代码,看看他是如何实现窗口拖动/关闭的。
答案 1 :(得分:1)
OpenLaszlo确实实现了仅在某些运行时可用的功能。对于MP3音频播放,Flash Player网络摄像头和麦克风访问,RTMP流媒体来说都是如此。 OpenLaszlo编译器支持将ActionScript代码直接插入脚本和方法中。
这是一个捕获Event.DEACTIVATE和Event.ACTIVATE事件的示例应用程序,并允许您通过单击/触摸红色视图退出应用程序。
可以使用< passthrough>导入ActionScript 3 API tag - 可以在画布,类定义或代码中的任何标记实例中使用。
<canvas bgcolor="#ffffff" debug="false" height="100%" width="100%">
<passthrough when="$as3">
import flash.events.Event;
import flash.desktop.NativeApplication;
</passthrough>
<handler name="oninit">
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, __onDeactivate);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, __onActivate);
</handler>
<method name="__onActivate" args="ev">
Debug.info("onActivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<method name="__onDeactivate" args="ev">
Debug.info("onDeactivate");
Debug.info("frame rate is " + this.getDisplayObject().stage.frameRate)
</method>
<view width="80%" height="50%" bgcolor="red" clickable="true">
<passthrough>
import flash.desktop.NativeApplication;
</passthrough>
<handler name="onclick">
NativeApplication.nativeApplication.exit();
</handler>
</view>
</canvas>
如果只想为SWFx运行时执行代码,可以检查将该代码放入块中检查$ as3属性:
if ($as3) {
// Insert some code for the SWFx runtime or AIR applications only
}
使用该方法,可以轻松地将LZX代码重新用于DHTML,SWFx或AIR应用程序。