OpenLaszlo应用程序可以访问AIR API吗?

时间:2008-10-19 03:37:53

标签: flash interop air adobe openlaszlo

似乎OpenLaszlo可以run on AIR。不太明显的是OpenLaszlo应用程序是否可以使用特定于AIR的API,例如文件系统访问。如果是这样,这究竟是怎么做到的?

2 个答案:

答案 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应用程序。