1

我正在开发一个游戏,它使用 mx 画布(每个画布在自己的 mxml 文件中)来包装应用程序的不同方面。所以 UI 被包裹在一个画布中,主游戏屏幕被包裹在另一个画布中,依此类推。我遇到了一个问题,MouseEvent.CLICK即我想要转到一个movieClip 的鼠标输入(特别是,但它似乎适用于所有鼠标输入)GameScreen.mxml被一个mx.core.FlexSprite名为“ contentPane”的对象捕获,该对象是GameUI.mxml.

当对象被实例化时,这个contentPane精灵不存在GameUI,事实上,直到我设置一些textFields包含在GameUI. 这些确实与我想要接收鼠标输入的内容textFields重叠,但它们本身被设置为,并且没有捕捉到鼠标输入。movieCliptextFieldsmouseEnabled = false

我的代码都没有直接创建这个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 contentPane。好像应该有。

4

0 回答 0