【问题标题】:Flash/Flex CursorsFlash/Flex 光标
【发布时间】:2009-01-09 11:43:18
【问题描述】:
我正在开发一个加载在 CS3 中创建的外部 Flash 资源的 Flex 应用程序。我刚刚阅读了有关如何使用 Flex mx.managers.CursorManager 类显式更改鼠标光标的信息。但我最理想的做法是在加载的 Flash SWF 中的某些元素上设置鼠标光标属性,这样当光标经过该元素时,光标会自动更改,而无需我响应鼠标事件。
有可能吗? Flash 在 DisplayObject 中是否支持这个?
似乎 Flash SWF 覆盖了我。某些对象会在鼠标悬停时自动显示手形光标,而我看不到在 DisplayObject 上关闭此功能的方法?
【问题讨论】:
标签:
apache-flex
flash
actionscript-3
【解决方案1】:
要设置“手形”光标,只要鼠标悬停在元素上,您必须指定以下属性:
<mx:VBox
useHandCursor="true"
mouseChildren="false"
buttonMode="true">
但这仅适用于手形光标。还要注意必需的 mouseChildren 属性。您必须将其设置为 false 以实现所有包含项目的光标,或者您必须为所有元素指定属性 useHandCursor 和 buttonMode。然而,将 mouseChildren 设置为 false 的副作用是所有鼠标事件(mouseOver、mouseOut、 click,...) 在子元素上将不再起作用。
如果您想使用与手形光标不同的光标,恐怕您只有两种可能:
- 用您的光标替换标准手形光标
- 使用 mouseOver 和 mouseOut 事件以编程方式设置光标。
【解决方案2】:
在任何继承自 Sprite 且 buttonMode 和 useHandCursor 属性都为 true 的对象中,默认情况下,您将在鼠标悬停时获得手形光标。有些对象默认这样做,正确; Button 和 LinkButton 是您可能已经注意到的示例。只需在任何这些组件上将 useHandCursor 设置为 false 即可轻松禁用手形光标,即使它的 buttonMode 属性(负责调度点击事件)设置为 true。
但是,如果您想将光标设置为 mouseOver 上的任何其他内容,则必须响应鼠标事件;没有办法解决这个问题。根据您的设计目标,您可以通过某种方式解决这个问题,可能通过从其他对象继承然后覆盖其默认行为,但以某种形式或其他形式,运行时需要知道您希望处理这些鼠标事件。