[类库或类文件] asarea——AS3 ToolTip鼠标提示类

[类库或类文件] asarea——AS3 ToolTip鼠标提示类

原文地址:http://www.asarea.cn/showdiary.jsp?id=157
转载请注明出处,欢迎探讨,欢迎指正

由于项目需要,今天写了一个鼠标提示类,现在共享出来,欢迎大家探讨。

使用示例:
  1. import cn.asarea.tool.*;

  2. ToolTip.stage = stage;
  3. //ToolTip.setTipProperty(0xcccccc, 15, 300, 0xcccccc, 0x333300);
  4. ToolTip.BindDO(tipDO1, "欢迎访问http://www.asarae.cn");
  5. ToolTip.BindDO(tipDO2, "ATHER Shu");
  6. //ToolTip.hideToolTip();
  7. //ToolTip.showToolTip();
  8. //ToolTip.removeToolTip();
  9. //ToolTip.LooseDO(tipDO1);
  10. ToolTip.setDOInfo(tipDO2, "say hello to AS");
复制代码
具体演示见:http://www.asarea.cn/showdiary.jsp?id=157
f.JPG

ToolTip.as
  1. /**
  2. *Author: ATHER Shu 2008.7.15
  3. * ToolTip类: 鼠标提示类
  4. * 功能:
  5. * 1.绑定某DisplayObject以显示鼠标提示 BindDO
  6. * 2.去除某DisplayObject绑定 LooseDO
  7. * 3.动态更改某DisplayObject鼠标提示信息 setDOInfo
  8. * 4.测试某DisObject是否已经绑定 TestDOBinding
  9. * 5.动态隐藏所有鼠标提示 hideToolTip
  10. * 6.动态显示所有鼠标提示 showToolTip
  11. * 7.清空所有鼠标提示 removeToolTip
  12. * 8.设定全局鼠标提示样式 setTipProperty
  13. * http://www.asarea.cn
  14. * ATHER Shu(AS)
  15. */
  16. package cn.asarea.tool
  17. {
  18.         import flash.display.DisplayObject;
  19.         import flash.display.Graphics;
  20.         import flash.display.Sprite;
  21.         import flash.display.Stage;
  22.         import flash.events.MouseEvent;
  23.         import flash.text.TextField;
  24.         import flash.text.TextFieldAutoSize;
  25.         import flash.text.TextFormat;

  26.         public class ToolTip extends Sprite
  27.         {
  28.                 static private var m_stage:Stage;//注,tooltip必须加到stage下
  29.                 static private var m_ntxtcolor:uint=0x000000;
  30.                 static private var m_ntxtsize:int=12;
  31.                 static private var m_nbordercolor:uint=0x000000;
  32.                 static private var m_nbgcolor:uint=0xFFFFCC;
  33.                 static private var m_nmaxtxtwidth:Number=200;
  34.                 //
  35.                 static private var m_uniqueInstance:ToolTip;
  36.                 //
  37.                 private var m_arrDOTips:Array;
  38.                 private var m_tipTxt:TextField;
  39.                 //
  40.                 public function ToolTip()
  41.                 {
  42.                         super();
  43.                         m_arrDOTips = new Array();
  44.                 }
  45.                 //获取全局唯一实例
  46.                 private static function getInstance():ToolTip
  47.                 {
  48.                         if(m_uniqueInstance == null)
  49.                         {
  50.                                 m_uniqueInstance = new ToolTip();
  51.                                 m_uniqueInstance.visible = false;
  52.                                 m_uniqueInstance.m_tipTxt = new TextField();
  53.                                 m_uniqueInstance.m_tipTxt.autoSize = TextFieldAutoSize.LEFT;
  54.                                 m_uniqueInstance.m_tipTxt.selectable = false;
  55.                                 m_uniqueInstance.addChild(m_uniqueInstance.m_tipTxt);
  56.                                 //
  57.                                 m_stage.addChild(m_uniqueInstance);
  58.                         }
  59.                         return m_uniqueInstance;
  60.                 }
  61.                 //清空tooltips,注:不是隐藏所有,而是彻底清空,如果要隐藏,某一时刻又显示出来的话,采用hide和show
  62.                 public static function removeToolTip():void
  63.                 {
  64.                         for(var i:int=0; i<getInstance().DOTips.length; i++)
  65.                         {
  66.                                 getInstance().DOTips[i].DO.removeEventListener(MouseEvent.ROLL_OVER, showtip);
  67.                                 getInstance().DOTips[i].DO.removeEventListener(MouseEvent.ROLL_OUT, hidetip);
  68.                                 getInstance().DOTips[i].DO.removeEventListener(MouseEvent.MOUSE_MOVE, movetip);
  69.                                 getInstance().DOTips[i] = null;
  70.                                 m_stage.removeChild(getInstance());
  71.                                 m_uniqueInstance = null;
  72.                         }
  73.                 }
  74.                 //暂时隐藏
  75.                 public static function hideToolTip():void
  76.                 {
  77.                         m_stage.removeChild(getInstance());
  78.                 }
  79.                 //再次show
  80.                 public static function showToolTip():void
  81.                 {
  82.                         m_stage.addChild(getInstance());
  83.                 }
  84.                 //添加某DO的tip绑定
  85.                 public static function BindDO(DO:DisplayObject, info:String):void
  86.                 {
  87.                         //test if already been binded
  88.                         if(TestDOBinding(DO) == -1)
  89.                         {
  90.                                 //add to array
  91.                                 var dotip:Object = {DO:DO, info:info};
  92.                                 getInstance().DOTips.push(dotip);
  93.                                 //
  94.                                 DO.addEventListener(MouseEvent.ROLL_OVER, showtip);
  95.                                 DO.addEventListener(MouseEvent.ROLL_OUT, hidetip);
  96.                                 DO.addEventListener(MouseEvent.MOUSE_MOVE, movetip);
  97.                         }
  98.                 }
  99.                 //去除某DO的tip绑定
  100.                 public static function LooseDO(DO:DisplayObject):void
  101.                 {
  102.                         if(TestDOBinding(DO) != -1)
  103.                         {
  104.                                 for(var i:int=TestDOBinding(DO); i<getInstance().DOTips.length-1; i++)
  105.                                 {
  106.                                         getInstance().DOTips[i] = getInstance().DOTips[i+1];
  107.                                 }
  108.                                 getInstance().DOTips.pop();
  109.                                 DO.removeEventListener(MouseEvent.ROLL_OVER, showtip);
  110.                                 DO.removeEventListener(MouseEvent.ROLL_OUT, hidetip);
  111.                                 DO.removeEventListener(MouseEvent.MOUSE_MOVE, movetip);
  112.                         }
  113.                 }
  114.                 //更改某绑定DO的文字信息
  115.                 public static function setDOInfo(DO:DisplayObject, info:String):void
  116.                 {
  117.                         if(TestDOBinding(DO) == -1)
  118.                                 BindDO(DO, info);
  119.                         else
  120.                                 getInstance().DOTips[TestDOBinding(DO)].info = info;
  121.                 }
  122.                 //测试是否已经绑定,绑定则返回数组中的次序,否则返回-1
  123.                 public static function TestDOBinding(DO:DisplayObject):int
  124.                 {
  125.                         var flag:Boolean = false;
  126.                         for(var i:int=0; i<getInstance().DOTips.length; i++)
  127.                         {
  128.                                 if(getInstance().DOTips[i].DO == DO)
  129.                                 {
  130.                                         flag = true;
  131.                                         break;
  132.                                 }
  133.                         }
  134.                         return (flag ? i : -1);
  135.                 }
  136.                 //
  137.                 private static function showtip(evt:MouseEvent):void
  138.                 {
  139.                         getInstance().x = evt.stageX;
  140.                         getInstance().y = evt.stageY + 20;//注,20是鼠标高度
  141.                         getInstance().m_tipTxt.wordWrap = false;
  142.                         getInstance().m_tipTxt.text = getInstance().DOTips[TestDOBinding(evt.target as DisplayObject)].info;
  143.                         updatetip();
  144.                         getInstance().visible = true;
  145.                 }
  146.                 private static function hidetip(evt:MouseEvent):void
  147.                 {
  148.                         getInstance().visible = false;
  149.                 }
  150.                 private static function movetip(evt:MouseEvent):void
  151.                 {
  152.                         getInstance().x = evt.stageX;
  153.                         getInstance().y = evt.stageY + 20;
  154.                 }
  155.                 private static function updatetip():void
  156.                 {
  157.                         getInstance().m_tipTxt.textColor = m_ntxtcolor;
  158.                         if(getInstance().m_tipTxt.width > m_nmaxtxtwidth)
  159.                         {
  160.                                 getInstance().m_tipTxt.wordWrap = true;
  161.                                  getInstance().m_tipTxt.width = m_nmaxtxtwidth;
  162.                         }
  163.                         var tf:TextFormat = new TextFormat();
  164.                         tf.size = m_ntxtsize;
  165.                         getInstance().m_tipTxt.setTextFormat(tf);
  166.                         //
  167.                         var gp:Graphics = getInstance().graphics;
  168.                         gp.clear();
  169.                         gp.lineStyle(0, m_nbordercolor);
  170.                         gp.beginFill(m_nbgcolor);
  171.                         gp.drawRect(0, 0, getInstance().m_tipTxt.width, getInstance().m_tipTxt.height);
  172.                         gp.endFill();
  173.                         //
  174.                 }
  175.                 //
  176.                 public static function set stage(stage:Stage):void
  177.                 {
  178.                         m_stage = stage;
  179.                 }
  180.                 public static function setTipProperty(txtcolor:uint=0x000000, txtsize:int=12, maxtxtwidth:int=200, bordercolor:uint=0x000000, bgcolor:uint=0xFFFFCC):void
  181.                 {
  182.                         m_ntxtcolor = txtcolor;
  183.                         m_ntxtsize = txtsize;
  184.                         m_nmaxtxtwidth = maxtxtwidth;
  185.                         m_nbordercolor = bordercolor;
  186.                         m_nbgcolor = bgcolor;
  187.                 }
  188.                 //
  189.                 private function get DOTips():Array
  190.                 {
  191.                         return m_arrDOTips;
  192.                 }
  193.         }
  194. }
复制代码
posted @ 2011-11-23 14:23  无痕公子  阅读(297)  评论(0编辑  收藏  举报