启用F5功能键以重新加载或重新编译OpenLaszlo SWF应用程序

时间:2012-10-17 22:08:12

标签: compilation browser openlaszlo lzx

Flash Player的一个烦恼是播放器 - 一旦它具有焦点 - 阻止某些关键事件被传递到浏览器。特别是用于重新加载页面或重新编译应用程序的F5功能键。因此,在按F5之前,您必须在SWF电影区域外单击以使浏览器重新获得焦点。

如何将F5密钥与SWF运行时应用程序一起使用来重新编译和重新加载SWF运行时应用程序?

1 个答案:

答案 0 :(得分:1)

对于所有基于ActionScript 3的运行时(SWF10,SWF11,...),以下代码将通过按F5重新加载OpenLaszlo应用程序。

<canvas>

    <passthrough when="$as3">
       import flash.events.Event;
    </passthrough>

    <handler name="oninit">
      if ($as3) {
        var sprite = this.getDisplayObject();
        sprite.addEventListener(Event.ACTIVATE, onactivate)
        sprite.addEventListener(Event.DEACTIVATE, ondeactivate);
      }
    </handler>

    <method name="onactivate" args="e=null">
      Debug.info('OpenLaszlo app is active, press F5 to reload');
    </method>

    <method name="ondeactivate" args="e=null">
      Debug.info('OpenLaszlo SWF is inactive');
    </method>

    <switch><when property="$debug">
        <!-- Reload SWF app when F5 is pressed -->
        <command key="['f5']"
                 onselect="lz.Browser.callJS('document.location.reload(true)')"
                 active="$once{$as3}" />
    </when></switch>

</canvas>

首先,我正在跟踪Flash电影的Event.ACTIVATEEvent.DEACTIVATE事件。当Flash影片获得焦点时,将发送Event.ACTIVATE事件。要通过按F5启用重新加载,会添加<command />标记 - 但仅在为应用程序启用$ debug时。

<switch><when property="$debug">
    <!-- Reload SWF app when F5 is pressed -->
    <command key="['f5']"
             onselect="lz.Browser.callJS('document.location.reload(true)')"
             active="$once{$as3}" />
</when></switch>

onselect处理程序通过使用lz.Browser对象触发重新加载当前页面。键命令仅对ActionScript 3运行时有效。现在,当您在SWF运行时中测试或开发应用程序时,只需按F5重新加载,就像在DHTML运行时中一样。