Могут ли приложения OpenLaszlo получать доступ к API-интерфейсам AIR? - PullRequest
2 голосов
/ 19 октября 2008

Кажется, OpenLaszlo может работать на AIR . Менее очевидно, могут ли приложения OpenLaszlo использовать API-интерфейсы, специфичные для AIR, например, доступ к файловой системе. Если да, то как именно это делается?

Ответы [ 2 ]

2 голосов
/ 06 ноября 2008

Хотя у меня нет никаких подробностей, в статье, на которую вы ссылаетесь, упоминается, что его окно приложения можно перетащить и закрыть. Это API-интерфейсы только для AIR (см. Класс NativeWindow), поэтому, вероятно, то, о чем вы спрашиваете, должно быть в какой-то степени возможно.

Тем не менее, я понимаю, что OpenLaszlo старается не реализовывать вещи, которые можно сделать во Flash, но не (скажем) DHTML, поэтому может быть менее очевидно, как делать такие вещи, как локальный доступ к файлам. Возможно, вам захочется скачать исходный код, указанный в статье, и посмотреть, как он реализовал перетаскивание / закрытие окна.

1 голос
/ 04 августа 2010

OpenLaszlo реализует функции, которые доступны только в определенных средах выполнения. Это верно для воспроизведения аудио MP3, веб-камеры Flash Player и доступа к микрофону, потоковой передачи по RTMP. Компилятор OpenLaszlo поддерживает вставку кода ActionScript непосредственно в сценарии и методы.

Вот пример приложения, которое перехватывает события Event.DEACTIVATE и Event.ACTIVATE и позволяет выйти из приложения, щелкнув / коснувшись красного представления.

API-интерфейсы ActionScript 3 можно импортировать с помощью тега , который можно использовать внутри холста, определений классов или любого экземпляра тега в вашем коде.

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

...