2013-01-22 5 views
0

에서 표시되지 않을 : 파일 대화 상자가 내가 ExternalInterface를하고 다음 addCallBack와 자바 스크립트에서 플렉스 기능을 실행하려고 플렉스 기능

<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="initApp()"> 

import flash.external.*; 
import flash.net.FileReference; 

public function initApp():void { 
    ExternalInterface.addCallback("sendTextFromJS", receiveTextFromJS); 
} 

public function receiveTextFromJS(s:String):void { 
    l1.text = s; 
    var myFileReference:FileReference = new FileReference(); 
    myFileReference.browse(); 
} 

그러나 파일 대화 상자가 표시되지 않는 몇 가지 이유에 대한

하지만, ID 레이블의 텍스트 l1이 변경됩니다.

답변

2

FileReference.browse 행위는 사용자 동작 (마우스 클릭이나 키 누르기 이벤트)에 대한 응답으로 호출 할 수있다, 그래서 당신은 경고를 사용할 수 있습니다 예를 들어, 당신은, 사용자 동작을 얻기 위해 코드를 수정해야합니다 :

 public function receiveTextFromJS(s:String):void { 
      Alert.show("Browse for files?", "", Alert.OK | Alert.CANCEL, null, onAlert); 
     } 

     private function onAlert(event:CloseEvent):void 
     { 
      if(event.detail == Alert.OK) 
      { 
       var myFileReference:FileReference = new FileReference(); 
       myFileReference.browse(); 
      } 
     } 
+0

내가 볼 수 있지만 자바 스크립트 단추를 클릭하고 플래시와 직접 상호 작용하지 않고 ExternalInterface를 사용하여 간접적으로 파일 대화 상자 (FileReference)를 열고 싶습니다. 아니면 사용자 동작을 시뮬레이트하는 방법이 있습니까? –

+1

아니요, 사용자 작업이 플래시의 호출 스택에 있어야하며이 요구 사항에 따라 응용 프로그램 논리 및 UI를 구성해야합니다. 이러한 조치없이 사용자 작업을 시뮬레이트하거나 브라우저 대화 상자를 표시하는 방법은 없습니다. 보안 및 개인 정보 보호를위한 것입니다. – fsbmain