MouseManager

/**
* 鼠标类型管理
* 用于管理鼠标类型 鼠标贴图等
*/
package mgzj.impls.drag
{
import de.polygonal.ds.HashMap;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.ui.Mouse;
import flash.ui.MouseCursor;
import flash.ui.MouseCursorData;

import ma.resource.ResManager;

import mgzj.global.GameGlobal;
import mgzj.global.consts.enums.ENUM_SELECT_TYPE;
import mgzj.global.vo.share.ActionData;
import mgzj.global.vo.share.ItemData;
import mgzj.global.vo.share.SkillData;

public class MouseManager
{
//------------------级别1(click)
//静态图标类型
public static const HIDE_TYPE:String = "hideType";
public static const REPAIR_TYPE:String = "repairType";
public static const SELL_TYPE:String = "sellGoodsType";

//动态图标类型
public static const SPLIT_TYPE:String = "splitType";
public static const REPLACE_SKILL_TYPE:String = "replaceSkillType";//在技能快捷栏中的 技能图标替换状态
public static const USE_SKILL_TYPE:String = "useSkillType";//在技能快捷栏中的 技能图标替换状态

//----------------------级别2(over)
public static const ATTACK_TYPE:String = "attackType";
public static const DEFAULT_TYPE:String = "defaultType";
public static const NPC_TYPE:String = "npcType";
public static const OPERATE_TYPE:String = "operateType";
public static const PICK_TYPE:String = "pickType";


private static var mouseState:String = MouseManager.DEFAULT_TYPE;
private static var mouseData:ActionData;

/**
* 添加鼠标类型
* @param mouseType 类型名称
* @param bit 图
*/
public static function initMouseManager():void
{
var md:MouseCursorData;

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_ATTACK_BMPD];
Mouse.registerCursor(ATTACK_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_DEFAULT_BMPD];
Mouse.registerCursor(DEFAULT_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_NPC_BMPD];
Mouse.registerCursor(NPC_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_OPERATE_BMPD];
Mouse.registerCursor(OPERATE_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_PICK_BMPD];
Mouse.registerCursor(PICK_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_REPAIR_BMPD];
Mouse.registerCursor(REPAIR_TYPE,md);

md = new MouseCursorData();
md.data = new <BitmapData>[GameGlobal.CURSOR_SELL_BMPD];
Mouse.registerCursor(SELL_TYPE,md);
}

/**
* 设置鼠标状态
* type:String,鼠标类型
* data:ActionData,数据
*/
public static function setMouseType(type:String,data:ActionData=null):void
{
reset();

mouseState = type;
mouseData = data;

if(!Mouse.supportsNativeCursor)
{
Mouse.show();
return;
}
else
{
switch(type)
{
case REPAIR_TYPE:
case SELL_TYPE:
case NPC_TYPE:
case ATTACK_TYPE:
case OPERATE_TYPE:
case PICK_TYPE:
Mouse.cursor = type;
break;
case SPLIT_TYPE:
case REPLACE_SKILL_TYPE:
if(mouseData && ResManager.instance.exists("icon",mouseData.imageID))
{
//mouseIcon.bitmapData = ResManager.instance.loadPreResource("icon",mouseData.imageID) as BitmapData;
}
break;
case USE_SKILL_TYPE:
if(mouseData is SkillData)
{
var skill:SkillData = mouseData as SkillData;
if(skill.staticData.nSelectType == ENUM_SELECT_TYPE.SELECT_TYPE_POS)
{

}
else if(skill.staticData.nSelectType == ENUM_SELECT_TYPE.SELECT_TYPE_DIR)
{

}
else if(skill.staticData.nSelectType == ENUM_SELECT_TYPE.SELECT_TYPE_CHARACTER)
{

}
}
Mouse.show();
break;
case HIDE_TYPE:
Mouse.hide();
break;
case DEFAULT_TYPE:
Mouse.show();
break;
default:
break;
}
}
}

public static function trySet(type:String):void
{
if([DEFAULT_TYPE,NPC_TYPE,ATTACK_TYPE,OPERATE_TYPE,PICK_TYPE].indexOf(mouseState) > -1)
{
if(mouseState != type)
setMouseType(type);
}
}

public static function reset():void
{
mouseData = null;
mouseState = MouseManager.DEFAULT_TYPE;
Mouse.cursor = MouseManager.DEFAULT_TYPE;
}

public static function get data():ActionData
{
return mouseData;
}

public static function get mouseType():String
{
return mouseState;
}
}
}
posted @ 2011-12-30 16:55  ndljava  阅读(535)  评论(0)    收藏  举报