package com.zqgame.army.contrl{/** * 自訂氣泡提示 *@author zhoujie *@date 2011-8-9 **/import flash.display.DisplayObject;import flash.display.DisplayObjectContainer;import flash.display.Sprite;import flash.events.MouseEvent;import flash.text.TextField;import flash.text.TextFieldAutoSize;import flash.text.TextFormat;import flash.utils.Dictionary;public class ToolTip extends Sprite{private var dic:Dictionary=new Dictionary();private var label:TextField;private var _backgound:Sprite;public function ToolTip(){super();initUI();}static private var _instance:ToolTip;static public function getInstance():ToolTip{if(!_instance)_instance=new ToolTip();return _instance;}private function regesterModule(area:*):void{if(area is DisplayObjectContainer){if(dic[area.name])return;dic[area.name]=1;area.addEventListener(MouseEvent.MOUSE_OVER,mouseMoveFunc);area.addEventListener(MouseEvent.MOUSE_OUT,mouseMoveFunc);}else{var pa:DisplayObjectContainer= (area as DisplayObject).parent as DisplayObjectContainer;if(dic[pa.name])return;dic[pa.name]=2;pa.addEventListener(MouseEvent.MOUSE_OVER,mouseMoveFunc);pa.addEventListener(MouseEvent.MOUSE_OUT,mouseMoveFunc);}}public function createToolTip(area:*,mess:String):void{dic[area.name+"mess"]=mess;regesterModule(area);}private function mouseMoveFunc(evt:MouseEvent):void{switch(evt.type){case MouseEvent.MOUSE_OUT :hide(evt);break;case MouseEvent.MOUSE_OVER :show(evt);break;}}private function hide(evt:MouseEvent):void{this.parent.removeChild(this);}private function show(evt:MouseEvent):void{var cont:DisplayObjectContainer= evt.currentTarget as DisplayObjectContainer;if(dic[cont.name]==2){var dis:DisplayObject=evt.target as DisplayObject;if(!dic[dis.name+"mess"])return;label.htmlText=dic[dis.name+"mess"];redraw(5,5);(evt.currentTarget as DisplayObjectContainer).addChild(this);this.x=dis.x+10;this.y=dis.y-10;}else{var obj:DisplayObjectContainer= evt.currentTarget as DisplayObjectContainer;if(!dic[obj.name+"mess"])return;label.htmlText=dic[obj.name+"mess"];redraw(20,20);obj.parent.addChild(this);this.x=obj.x+100;this.y=obj.y;}}private function redraw(w:Number,h:Number) :void{ w += label.width; h += label.height; this.graphics.clear(); this.graphics.beginFill(0x000000, 0.4); this.graphics.beginFill(0xffffff); this.graphics.drawRoundRect(0, 0, w, h, 5, 5); this.graphics.endFill(); } private function initUI():void{label = new TextField(); label.autoSize = TextFieldAutoSize.LEFT; label.selectable = false; label.multiline = false; label.wordWrap = false; label.defaultTextFormat = new TextFormat("宋體", 12, 0x666666); label.text = "提示資訊"; label.x = 5; label.y = 2; addChild(label); mouseEnabled = mouseChildren = false; }public function closeToolTip(area:*):void{if(dic[area.name]){delete dic[area.name];delete dic[area.name+"mess"];}area.removeEventListener(MouseEvent.MOUSE_OVER,mouseMoveFunc);area.removeEventListener(MouseEvent.MOUSE_OUT,mouseMoveFunc);}}}
花了一天的時間才寫出來,在網上找了很多材料,但是發現都不能通用,而且調用起來,特別複雜,所以自己寫了一個,只用一句代碼就可以了。
createToolTip()直接調用該方法,然後傳顯示對象和提示文本,注意,該顯示對象為任意對象,可以是button,也可以是mc等。