【发布时间】:2012-03-16 21:07:17
【问题描述】:
我想将鼠标悬停在 buttonMode=true 的动画剪辑上时出现的小手光标替换为自定义图形。
有没有办法为我的整个应用程序全局执行此操作,或者我是否必须转到每个按钮,添加 MOUSE_OVER、MOUSE_OUT 和 MOUSE_MOVE 处理程序,这些处理程序将隐藏和显示鼠标光标以及将手形图形放在它上面并定位正确吗?
看起来很乏味...
【问题讨论】:
我想将鼠标悬停在 buttonMode=true 的动画剪辑上时出现的小手光标替换为自定义图形。
有没有办法为我的整个应用程序全局执行此操作,或者我是否必须转到每个按钮,添加 MOUSE_OVER、MOUSE_OUT 和 MOUSE_MOVE 处理程序,这些处理程序将隐藏和显示鼠标光标以及将手形图形放在它上面并定位正确吗?
看起来很乏味...
【问题讨论】:
似乎有办法改变原生光标; http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ui/Mouse.html#registerCursor()
但您必须只针对 Flash Player 10.2+...
【讨论】:
Mouse.registerCursor(MouseCursor.BUTTON, cursorData) 在整个应用程序中更改 buttonMode=true 手形光标。
您可以编写一组 MOUSE_OVER、MOUSE_MOVE 和 MOUSE_OUT 处理程序,按照您的描述进行替换和定位,然后将侦听器添加到指向这些处理程序的所有按钮。请记住,相同的处理程序可以用于多个对象。
或者,假设您的“按钮”是 MovieClip,您可以编写一个自定义 ActionScript 类来扩展 MovieClip,定义此默认功能,然后让您的所有按钮实例都使用该类作为基础。见下文:
public class ButtonMovieClip extends MovieClip {
public function ButtonMovieClip() {
addEventListener(MouseEvent.MOUSE_OVER, buttonOver);
addEventListener(MouseEvent.MOUSE_OUT, buttonOut);
addEventListener(MouseEvent.MOUSE_MOVE, buttonMove);
}
public function buttonOver(event:MouseEvent) {
//Hide mouse and add replacement graphic
}
public function buttonOut(event:MouseEvent) {
//Show mouse and remove graphic
}
public function buttonMove(event:MouseEvent) {
//Position graphic where mouse should be
}
}
然后,关键是确保您的所有按钮都是从此类创建的(通过代码或从 Flash IDE 中创建)。
【讨论】: