2011-10-10 16 views
6

ある私は、フォームを含むHTMLファイル持っているとしましょう:私たちは、SWFファイル内のHTMLLoaderを使用して、このHTMLファイルをロードしている入力elemntsは、AdobeのAIRで読み取り専用

<form method="post" action="url"> 
    <input type="text" id="fullname" /> 
    <input type="text" id="bodyText" /> 
    <input type="submit"> 
</form> 

を。

_htmlLoader = new HTMLLoader(); 
_htmlLoader.paintsDefaultBackground = false; 
var req:URLRequest = new URLRequest(urlValue); 
_htmlLoader.load(req); 
_stage.addChild(_htmlLoader); 

は、メインアプリケーション内Loaderを使用して、このSWFファイルをロードした後、テキストボックスは読み取り専用であり、それを入力することはできません。 しかし、マウスを使用してフォーカスを変更できます。

var loader1:Loader = new Loader(); 
loader1.load(new URLRequest("path to file.swf")); 
// ... 
this.addChild(loader1); 
// ... 

問題は何ですか?

+0

あなたが直接として(最初のSWF(HTMLLoaderオブジェクトを持っているもの)を表示する場合、HTMLフォーム要素が正常に動作(つまり、キーボード入力を受け付ける)でくださいAIRアプリケーションのメインSWF)を別のSWF内にロードしないでください。もしそうなら、あなたが言及した問題はAIRのバグのように見えます。 – Ashutosh

+0

アプリケーションはフルスクリーンモードで動作しますか? – weltraumpirat

+0

@Ashutosh:はい! – Jalal

答えて

0

Event.COMPLETEイベントが発生した後にHTMLLoaderが接続されていますか?ステージにアタッチする前に、HTMLReaderのドキュメントがDOMReadyイベントを発生させるのを待つ価値があります。

はこのような何かを試してみてください:

_htmlLoader = new HTMLLoader(); 
_htmlLoader.paintsDefaultBackground = false; 
var urlRequest:URLRequest = new URLRequest(urlRequest); 
_htmlLoader.addEventListener(Event.COMPLETE, completeHandler); 
_htmlLoader.load(urlRequest); 

function completeHandler(event:Event):void { _htmlLoader.window.document.addEventListener("DOMContentLoaded", readyHandler); } 

function readyHandler(event:Event):void { _stage.addChild(_htmlLoader); } 

Flex documentation about handling HTML eventsはこれを言及:

リスナーが特定のDOM要素を参照する場合、発送には、親HTMLLoaderオブジェクトを待つことをお勧め ですイベントリスナーを追加する前に完全なイベント 。 HTMLページは多くの場合、複数の ファイルをロードし、すべてのファイルがロードされて解析されるまで、HTML DOMは完全に構築されません。 すべての要素が作成されると、HTMLLoaderはcompleteイベントを送出します。

ドキュメントが実際に準備が整う前にHTMLLoaderがステージにアタッチされている可能性があり、奇妙なことの一部が説明される可能性があります。あなたは素晴らしい助けとなり、それ以上の情報を持っている場合は

...

0

提案された解決策(addChildDOMContentLoadedイベントを待つ」)私のために動作しませんでした。

代わりに、FULL_SCREEN_INTERACTIVEの表示状態を使用して機能しました。 Adobe's documentation about FULL_SCREENによると:

「キーボード対話は、モバイルデバイスで有効になっている」

(私はそれはそれは、デスクトップのような他のプロファイルを無効にしていますだと思います)。 FULL_SCREEN_INTERACTIVEながら

ステージがを有効にし、キーボード操作でフルスクリーンモードであることを指定します。 Flash Player 11.3以降、この機能はAIRアプリケーションとブラウザベースのアプリケーションの両方でサポートされています。

だから私の場合、解決策をした

_stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE 
関連する問題