0

私はExternalInterfaceとaddCallbackを使用してjavascriptからflex関数を実行しようとしています:

<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();
}

しかし、いくつかの理由でファイルダイアログが表示されていませんが、IDl1のラベルからのテキストが変更されています。

4

1 に答える 1

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();
            }
        }
于 2013-01-22T10:29:28.190 に答える