我正在开发一款使用mx画布(每个都在自己的mxml文件中)来包装应用程序的不同方面的游戏。因此UI包含在一个画布中,主游戏屏幕包含在另一个画布中,依此类推。我有一个问题,鼠标输入(特别是MouseEvent.CLICK
,但它似乎适用于所有鼠标输入),我想转到GameScreen.mxml
中的movieClip被{{1}抓住名为“mx.core.FlexSprite
”的对象,它是contentPane
的子级。
当GameUI.mxml
对象被实例化时,这个contentPane
精灵不存在,并且实际上在我设置GameUI
所包含的textFields
的文本之前似乎不存在{1}}。这些GameUI
与我想要接收鼠标输入的textFields
重叠,但movieClip
本身设置为textFields
,并且没有捕获鼠标输入。
我的所有代码都没有直接创建这个mouseEnabled = false
精灵,而一些基本的Google搜索告诉我这个contentPane
精灵是由contentPane
内部创建的。但是,我似乎无法找到任何关于它如何实际工作的文档,以及导致这个精灵被创建的原因。
此功能以前有效,我所知道的唯一重要的近期变化是将加载到mx.flex.container
的swfs移动到他们自己的应用程序域中以修复命名空间冲突。我完全准备相信这就是问题所在。
理想情况下,我想知道为什么GameUI
突然捕获鼠标输入。如果做不到这一点,我至少想找到一些关于contentPane
如何工作的文档,我如何操作它,以及导致它实例化的原因。
提前感谢您的帮助。
编辑:
我已经做了一些额外的挖掘,并想分享我所学到的东西:
contentPane
变量在contentPane
个对象中实例化,用于滚动和剪切目的。如果mx.core.container
对象的内容超过该对象的大小,容器将创建mx.core.container
并将其内容移动到该窗格中。但是,如果禁用滚动(contentPane
& verticalScrollPolicy="off"
)并禁用剪裁(horizontalScrollPolicy="off"
),则容器将不会实例化clipContent="false"
。这解决了我的具体问题,因为我不需要在此容器中滚动或剪切行为。
我仍然想知道是否有办法禁用contentPane
mx.core.container
的鼠标输入。好像应该有。