1

アプリケーションのさまざまな側面をラップするために、mx キャンバス (それぞれが独自の mxml ファイル内) を使用するゲームに取り組んでいます。つまり、UI は 1 つのキャンバスにラップされ、メインのゲーム画面は別のキャンバスにラップされます。MouseEvent.CLICKのmovieClipに移動したいマウス入力(具体的には、しかしすべてのマウス入力に適用されるようです)が、の子である「」というオブジェクトGameScreen.mxmlによってキャッチされているという問題があります。mx.core.FlexSpritecontentPaneGameUI.mxml

このcontentPaneスプライトは、オブジェクトがインスタンス化されたときには存在せず、実際には、に含まれるGameUIいくつかのテキストを設定するまで存在しないようです。これらは、マウス入力を受け取りたいものと重なっていますが、それら自体が に設定されており、マウス入力をキャッチしていません。textFieldsGameUItextFieldsmovieCliptextFieldsmouseEnabled = false

私のコードはこのcontentPaneスプライトを直接作成していません。いくつかの基本的なグーグルは、このスプライトが内部contentPaneで作成されていることを教えてくれます。mx.flex.containerただし、これが実際にどのように機能するか、およびこのスプライトが作成される原因についてのドキュメントが見つからないようです。

この機能は以前は機能していましたが、私が認識している唯一の重要な最近の変更はGameUI、名前空間の競合を修正するために、ロードされた swfs を独自のアプリケーション ドメインに移動したことです。私はそれが問題だと信じる準備ができています。

contentPane理想的には、これが突然マウス入力をキャッチする理由を知りたいです。contentPaneそれができない場合は、少なくとも、どのように機能するか、どのように操作できるか、インスタンス化の原因についてのドキュメントを見つけたいと思います。

よろしくお願いいたします。

編集:

さらに掘り下げて、学んだことを共有したいと思いました。

contentPane変数は、スクロールとクリッピングのためにオブジェクトでインスタンス化されますmx.core.container。オブジェクトのコンテンツがそのmx.core.containerオブジェクトのサイズを超える場合、コンテナは を作成し、contentPaneそのコンテンツをそのペインに移動します。ただし、スクロールが無効 ( verticalScrollPolicy="off"& horizontalScrollPolicy="off") でクリッピングが無効 ( clipContent="false") の場合、コンテナはcontentPane. このコンテナではスクロールやクリッピングの動作が必要ないため、これで特定の問題が解決しました。

のマウス入力を無効にする方法があるかどうかを知りたいですmx.core.container contentPane。あるべきだと思われます。

4

0 に答える 0