アプリケーションのさまざまな側面をラップするために、mx キャンバス (それぞれが独自の mxml ファイル内) を使用するゲームに取り組んでいます。つまり、UI は 1 つのキャンバスにラップされ、メインのゲーム画面は別のキャンバスにラップされます。MouseEvent.CLICK
のmovieClipに移動したいマウス入力(具体的には、しかしすべてのマウス入力に適用されるようです)が、の子である「」というオブジェクトGameScreen.mxml
によってキャッチされているという問題があります。mx.core.FlexSprite
contentPane
GameUI.mxml
このcontentPane
スプライトは、オブジェクトがインスタンス化されたときには存在せず、実際には、に含まれるGameUI
いくつかのテキストを設定するまで存在しないようです。これらは、マウス入力を受け取りたいものと重なっていますが、それら自体が に設定されており、マウス入力をキャッチしていません。textFields
GameUI
textFields
movieClip
textFields
mouseEnabled = 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
。あるべきだと思われます。