2012-10-17 3 views
1

Flash Player의 성가심 중 하나는 플레이어가 포커스를 받으면 특정 키 이벤트가 브라우저로 전달되지 못하도록 차단한다는 것입니다. 특히 페이지를 다시로드하거나 응용 프로그램을 다시 컴파일하는 데 사용되는 F5 키. 결과적으로 브라우저에서 F5 키를 누르기 전에 포커스를 다시 얻으려면 SWF 무비의 영역 바깥을 클릭해야합니다.F5 기능 키를 사용하여 OpenLaszlo SWF 응용 프로그램을 다시로드하거나 다시 컴파일

SWF 런타임 응용 프로그램을 다시 컴파일하고 다시로드하는 데 F5 키를 계속 사용하려면 어떻게해야합니까?

답변

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> 

첫째, 플래시 동영상에 대한 Event.ACTIVATEEvent.DEACTIVATE 이벤트를 추적하고 있습니다. Event.ACTIVATE 이벤트는 Flash 무비가 포커스를받을 때 전송됩니다. 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 오브젝트 사용하여 현재 페이지를 새로 고침 트리거한다. key 명령은 ActionScript 3 런타임에만 활성화됩니다. 이제 SWF 런타임에서 응용 프로그램을 테스트하거나 개발할 때 F5를 눌러 DHTML 런타임에서와 마찬가지로 다시로드하면됩니다.

+0

멋진 소식입니다. 게시 해 주셔서 감사합니다. –