/*
* 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)
}
}