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

发布于 2024-07-07 16:59:37 字数 288 浏览 4 评论 0原文

看来OpenLaszlo可以在 AIR 上运行。 不太明显的是 OpenLaszlo 应用程序是否可以使用 AIR 特定的 API,例如文件系统访问。 如果是这样,具体是如何完成的?

It seems OpenLaszlo can run on AIR. What's less obvious is whether OpenLaszlo apps can use the AIR-specific APIs, like file system access. If so, how exactly is this done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终陌 2024-07-14 16:59:37

虽然我没有任何细节,但您链接的文章提到他的应用程序窗口可以拖动和关闭。 这些是仅限 AIR 的 API(请参阅 NativeWindow 类),因此想必您所询问的内容在某种程度上是可能的。

然而,我的理解是,OpenLaszlo 尝试不实现可以在 Flash 中完成但不能在 DHTML 中完成的操作,因此如何执行本地文件访问等操作可能不太明显。 您可能需要下载文章中链接的源代码,看看他如何实现窗口拖动/关闭。

While I don't have any specifics, the article you linked mentions that his application window can be dragged and closed. Those are AIR-only APIs (see the NativeWindow class), so presumably what you're asking about must be possible to some extent.

However, my understanding is that OpenLaszlo tries not to implement things that can be done in Flash but not (say) DHTML, so it may be less obvious how to do things like local file access. Probably you'll want to download the source linked in the article and see how he implemented the window drag/close.

梦忆晨望 2024-07-14 16:59:37

OpenLaszlo 确实实现了仅在某些运行时可用的功能。 对于 MP3 音频播放、Flash Player 网络摄像头和麦克风访问、RTMP 流媒体来说都是如此。 OpenLaszlo 编译器支持将 ActionScript 代码直接插入脚本和方法中。

下面是一个示例应用程序,它捕获 Event.DEACTIVATE 和 Event.ACTIVATE 事件,并允许您通过单击/触摸红色视图来退出应用程序。

可以使用导入 ActionScript 3 API。 标签 - 可以在画布、类定义或代码中的任何标签实例内使用。

<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
}

使用该方法,可以轻松地为 DHTML、SWFx 或 AIR 应用程序重复使用 LZX 代码。

OpenLaszlo does implement features which are available in certain runtimes only. That's true for MP3 audio playback, Flash Player webcam and microphone access, RTMP streaming. The OpenLaszlo compiler supports inserting ActionScript code directly into scripts and methods.

Here is an example application which catches the Event.DEACTIVATE and Event.ACTIVATE events, and lets you exit the application by clicking/touching the red view.

ActionScript 3 APIs can be imported using the <passthrough> tag - which can be used inside the canvas, class definitions or any tag instance in your code.

<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>

If you want code to be executed for the SWFx runtime only, you can check put that code into blocks checking the $as3 property:

if ($as3) {
  // Insert some code for the SWFx runtime or AIR applications only
}

Using the approach, it's easy to re-use LZX code for either DHTML, SWFx or AIR applications.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文