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请问有没有更好的处理方法呢?
...全文
27 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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
回复
相关推荐
发帖
Flex
创建于2007-12-13

4328

社区成员

多媒体/设计 Flex
申请成为版主
帖子事件
创建了帖子
2011-03-05 11:54
社区公告
暂无公告