/* * copyright SAMSTUDIO.20051212.ToolTip * * 单列模式,静态工厂方法 * * // usage import com.UI.*; var toolTipsObj:ToolTips = ToolTips.getInstance(this, 0); b_1_btn.onRollOver = function() { toolTipsObj.drag("跟随鼠标,需要设定消失
支持HTML1.0") }; b_1_btn.onRollOut = function() { toolTipsObj.hide() }; b_2_btn.onRollOver = function() { toolTipsObj.show("5秒后自动隐藏") }; b_3_btn.onRollOver = function() { toolTipsObj.show("边距感知,上标显示 >=32", 300, 32); }; b_4_btn.onRollOver = function() { toolTipsObj.show("边距感知,下标显示 < 32", 450, 31); }; */ class com.UI.ToolTips { private var _self:MovieClip; private function ToolTips(target:MovieClip,depth:Number) { _self = target.createEmptyMovieClip("ToolTips_"+depth,depth) _self._visible = false; //_self.__bg_color = 0xFFFFE1; // 背景色 _self.__bg_color = 0xFFFFFF; // 背景色 _self.__line_color = 0; // 线条色 //_self.turn_num = 0.382; _self.turn_num = 0; _self.turn_div = 0; //3 圆角半径,0为直角 _self.mid_num = 0; _self.__init_x = 0; _self.__init_y = 0; _self.__direction = "top"; _self.dir_num = 0; _self.createTextField("label_txt", 10, 0, 0, 600, 20); _self.label_txt.html = true; _self.label_txt.multiline = true; _self.label_txt.autoSize = "left"; _self.label_txt.selectable = false; /* _self.label_txt.wordWrap = true; _self.label_txt.type = "dynamic"; _self.fmt = new TextFormat(); _self.fmt.size = 12; _self.fmt.font = "Courier New"; */ _self.__width = 100; _self.__height = 20; _self.intervalID= new Number(); //间隔ID _self.duration =5000; //间隔时间 //方法定义 _self.setLabel = new Object(); _self.setToolTipshow = new Object(); _self.setToolTipHide = new Object(); _self.setToolTipPosition = new Object(); _self.drawBg = new Object(); with(_self){ setLabel = function (_lbl) { label_txt.htmlText = _lbl; label_txt.setTextFormat(fmt); __width = label_txt.textWidth+4; __height = label_txt.textHeight+3; } setToolTipshow=function (_lbl,tx,ty) { setLabel(_lbl); //__direction = "top"; //dir_num = (-__height)-11; if( (ty||_parent._ymouse)<__height+14 ){ //margin-top:5px __direction = "bottom" dir_num = 28; }else{ __direction = "top" dir_num = -__height-12; } drawBg(tx||_parent._xmouse); if(tx == undefined){ onEnterFrame = setToolTipPosition; setToolTipPosition(); }else{ _x = tx-mid_num; _y = ty+dir_num; useHandCursor = false; clearInterval(intervalID); intervalID = setInterval(this,"setToolTipHide",duration); /* //其间鼠标悬停 onRollOver = function () { clearInterval(intervalID); } onRollOut = function () { this.setToolTipHide(); } */ } _visible = true; } setToolTipHide=function () { delete onEnterFrame; clearInterval(intervalID); _visible = false; } setToolTipPosition = function () { _x = _parent._xmouse-mid_num; _y = _parent._ymouse+dir_num; } drawBg = function (px:Number) { clear(); mid_num = (__width*px)/Stage.width; if (mid_num<15) { mid_num = 15; } if ((__width-mid_num)<10) { mid_num = __width-10; } switch (__direction) { case "top" : beginFill(__line_color); moveTo(__init_x-1, (__init_y+turn_div)-1); curveTo((__init_x+turn_num)-1, (__init_y+turn_num)-1, (__init_x+turn_div)-1, __init_y-1); lineTo(((__init_x+__width)-turn_div)+1, __init_y-1); curveTo(((__init_x+__width)-turn_num)+1, (__init_y+turn_num)-1, (__init_x+__width)+1, (__init_y+turn_div)+1); lineTo((__init_x+__width)+1, ((__init_y+__height)-turn_div)+1); curveTo(((__init_x+__width)-turn_num)+1, ((__init_y+__height)-turn_num)+1, ((__init_x+__width)-turn_div)+1, (__init_y+__height)+1); lineTo((__init_x+mid_num)+6, (__init_y+__height)+1); lineTo(__init_x+mid_num, (__init_y+__height)+9); lineTo((__init_x+mid_num)-6, (__init_y+__height)+1); lineTo((__init_x+turn_div)-1, (__init_y+__height)+1); curveTo((__init_x+turn_num)-1, ((__init_y+__height)-turn_num)+1, __init_x-1, ((__init_y+__height)-turn_div)+1); lineTo(__init_x-1, (__init_y+turn_div)+1); endFill(); beginFill(__bg_color); moveTo(__init_x, __init_y+turn_div); curveTo(__init_x+turn_num, __init_y+turn_num, __init_x+turn_div, __init_y); lineTo((__init_x+__width)-turn_div, __init_y+0); curveTo((__init_x+__width)-turn_num, __init_y+turn_num, __init_x+__width, __init_y+turn_div); lineTo(__init_x+__width, (__init_y+__height)-turn_div); curveTo((__init_x+__width)-turn_num, (__init_y+__height)-turn_num, (__init_x+__width)-turn_div, __init_y+__height); lineTo((__init_x+mid_num)-5, __init_y+__height); lineTo(__init_x+mid_num, (__init_y+__height)+7); lineTo((__init_x+mid_num)+5, __init_y+__height); lineTo(__init_x+turn_div, __init_y+__height); curveTo(__init_x+turn_num, (__init_y+__height)-turn_num, __init_x, (__init_y+__height)-turn_div); lineTo(__init_x, __init_y+turn_div); endFill(); break; case "bottom" : beginFill(__line_color); moveTo(__init_x-1, (__init_y+turn_div)-1); curveTo((__init_x+turn_num)-1, (__init_y+turn_num)-1, (__init_x+turn_div)-1, __init_y-1); lineTo((__init_x+mid_num)+6, __init_y-1); lineTo(__init_x+mid_num, __init_y-9); lineTo((__init_x+mid_num)-6, __init_y-1); lineTo(((__init_x+__width)-turn_div)+1, __init_y-1); curveTo(((__init_x+__width)-turn_num)+1, (__init_y+turn_num)-1, (__init_x+__width)+1, (__init_y+turn_div)+1); lineTo((__init_x+__width)+1, ((__init_y+__height)-turn_div)+1); curveTo(((__init_x+__width)-turn_num)+1, ((__init_y+__height)-turn_num)+1, ((__init_x+__width)-turn_div)+1, (__init_y+__height)+1); lineTo((__init_x+turn_div)-1, (__init_y+__height)+1); curveTo((__init_x+turn_num)-1, ((__init_y+__height)-turn_num)+1, __init_x-1, ((__init_y+__height)-turn_div)+1); lineTo(__init_x-1, (__init_y+turn_div)+1); endFill(); beginFill(__bg_color); moveTo(__init_x, __init_y+turn_div); curveTo(__init_x+turn_num, __init_y+turn_num, __init_x+turn_div, __init_y); lineTo((__init_x+mid_num)-5, __init_y); lineTo(__init_x+mid_num, __init_y-7); lineTo((__init_x+mid_num)+5, __init_y); lineTo((__init_x+__width)-turn_div, __init_y); curveTo((__init_x+__width)-turn_num, __init_y+turn_num, __init_x+__width, __init_y+turn_div); lineTo(__init_x+__width, (__init_y+__height)-turn_div); curveTo((__init_x+__width)-turn_num, (__init_y+__height)-turn_num, (__init_x+__width)-turn_div, __init_y+__height); lineTo(__init_x+turn_div, __init_y+__height); curveTo(__init_x+turn_num, (__init_y+__height)-turn_num, __init_x, (__init_y+__height)-turn_div); lineTo(__init_x, __init_y+turn_div); endFill(); break; } } } } //静态工厂方法,返回一个实例 public static function getInstance(target:MovieClip,depth:Number) { return new ToolTips(target,depth); } //显示 tipShow(str,x,y) 5秒后自动隐藏 //显示 tipShow(str), 隐藏 tipHide() public function show (str:String,tx:Number,ty:Number):Void { //tx==undefined? _self.setToolTipshow(str) : _self.setToolTipshow(str,tx,ty); tx==undefined? _self.setToolTipshow(str,Number(_xmouse),Number(_ymouse)) : _self.setToolTipshow(str,tx,ty); } public function hide ():Void { _self.setToolTipHide(); } public function drag (str:String):Void { _self.setToolTipshow(str) } }