flex应用中增么换鼠标

cdc104223 2011-03-05 11:54:24
在flex游戏中都应该有自己的鼠标展现。
我现在的实现方式是在每个有点击事件的对象上都注册一个mouseOver和mouseOut事件。代码如下:
[Embed(source="images/mouse/normal.png")]
public static var def:Class;
[Embed(source="images/mouse/hover.png")]
public static var OverStyle:Class;
/**
*鼠标移到上面的样式
*
*/
public static function MouseOverStyle(event:MouseEvent):void
{
if(event.currentTarget.enabled){
CursorManager.removeAllCursors();
CursorManager.setCursor(OverStyle,2,-3);
}
}
/**
*鼠标移开的样式
*
*/
public static function MouseOutStyle(event:MouseEvent):void
{
CursorManager.removeAllCursors();
CursorManager.setCursor(def,2,3);
}

我觉得这种处理方法,不好,q请问有没有更好的处理方法呢?
...全文
45 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdc104223 2011-03-08
  • 打赏
  • 举报
回复
我修改了一下。
[Embed(source="images/mouse/normal.png")]
public static var def:Class;
[Embed(source="images/mouse/hover.png")]
public static var OverStyle:Class;
//设置默认鼠标的ID;
private static var defaultID:int=0;
/**
*鼠标移到上面的样式
*
*/
public static function MouseOverStyle(event:MouseEvent):void
{
if(event.currentTarget.enabled){
CursorManager.setCursor(OverStyle,CursorManagerPriority.HIGH,-3);
}
}
/**
*鼠标移开的样式
*
*/
public static function MouseOutStyle(event:MouseEvent):void
{
if(CursorManager.currentCursorID!=defaultID){
CursorManager.removeCursor(CursorManager.currentCursorID);
}
}
/**
* 设置系统默认的鼠标
*/
public static function setSystemMouse():void
{
CursorManager.removeAllCursors();
defaultID=CursorManager.setCursor(def,CursorManagerPriority.MEDIUM,3);
}
/**
*定义一个可变参数的方法 因为每个页面需要加的都不一样
* @param clsArr
*
*/
public static function AddEventListener(...clsArr):void
{
if(clsArr.length>0)//说明得到的控件了
{
//在循环里面只会加上Button的
for each(var dis:DisplayObject in clsArr)
{
dis.removeEventListener(MouseEvent.ROLL_OVER,MouseOverStyle);
dis.removeEventListener(MouseEvent.ROLL_OUT,MouseOutStyle);
dis.addEventListener(MouseEvent.ROLL_OVER,MouseOverStyle);
dis.addEventListener(MouseEvent.ROLL_OUT,MouseOutStyle);
}

}
}
进入应用之后就执行setSystemMouse()方法,
需要改变鼠标样式的话就在界面中执行AddEventListener()方法,参数是你想鼠标放上去,然后改变鼠标样式组件。
呵呵,这样做,效果应该会好一些。
passself 2011-03-06
  • 打赏
  • 举报
回复
楼主自定义的方法已经很不错了,只是显示的效果可能会粗糙一些
xlgp2171 2011-03-05
  • 打赏
  • 举报
回复
如果只使用单一变化的话
在setCursor方法的时候可以获得一个光标的ID
然后只需要removeCursor这个ID就可以恢复了
不需要removeAllCursors

4,327

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧