·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3语言写的ToolTip类源代码实例

时间:2014-12-30 09:16riafan.com
AS3核心类中没有ToolTip类,Flex中的ToolTip类没法用在AS3工程中,Aswing的JToolTip不错,不过如果仅仅为了使用这一个类而导入Aswing就不太明智了

AS3核心类中没有ToolTip类,Flex中的ToolTip类没法用在AS3工程中,Aswing的JToolTip不错,不过如果仅仅为了使用这一个类而导入Aswing就不太明智了。由于最近的项目需要用到ToolTip,我就索性自己写了一个,特与大家分享。

看下面源码。

  1. package { 
  2.     import flash.events.MouseEvent; 
  3.     import flash.text.TextField; 
  4.     import flash.text.TextFieldAutoSize; 
  5.     import flash.text.TextFormat; 
  6.     import flash.display.Sprite; 
  7.     import flash.display.DisplayObjectContainer; 
  8.     import flash.display.InteractiveObject; 
  9.     /** 
  10.      * 提示文本 
  11.      * @author Flying http://localhost/wordpress 
  12.      */ 
  13.     public class AS3ToolTip{ 
  14.         private static var toolTip : TextField; 
  15.         private static var format : TextFormat; 
  16.         private static var owner :DisplayObjectContainer; 
  17.         //tooltip对象是否可用 
  18.         public static var enabled : Boolean = true
  19.         //目标对象数组 
  20.         private static var owners : Array = new  Array(); 
  21.         //文本对象数组 
  22.         private static var texts : Array = new Array(); 
  23.         public function AS3ToolTip() { 
  24.                 
  25.         }    
  26.         /** 
  27.          * 获取/设置提示文本的顶级显示对象 
  28.          */ 
  29.         public static function get root() :DisplayObjectContainer{ 
  30.             return owner; 
  31.         } 
  32.         public static function set root(value :DisplayObjectContainer) : void { 
  33.             if (owner == null){ 
  34.                 owner = value
  35.             } 
  36.         } 
  37.         /** 
  38.          * 新建一个提示文本 
  39.          * 
  40.          * @param   owner  要设置提示文本的目标对象 
  41.          * @param   text  提示文本的内容 
  42.          */ 
  43.         public static function create(owner:InteractiveObject, text: String) : void { 
  44.             owners.push(owner); 
  45.             texts.push(text); 
  46.             owner.addEventListener(MouseEvent.MOUSE_OVER, AS3ToolTip.showToolTip); 
  47.             owner.addEventListener(MouseEvent.MOUSE_OUT, AS3ToolTip.hideToolTip);    
  48.         } 
  49.         /** 
  50.          * 显示提示文本 
  51.          */  
  52.         private static function showToolTip(e : MouseEvent) : void { 
  53.             //初始化动态文本 
  54.             toolTip = new TextField(); 
  55.             toolTip.visible = true
  56.             toolTip.text = findText(InteractiveObject(e.currentTarget)); 
  57.             toolTip.background = true
  58.             toolTip.backgroundColor0xFFCC66
  59.             toolTip.border = true
  60.             toolTip.borderColor = 0x000000
  61.             toolTip.multiline = false
  62.             toolTip.wordWrap = false
  63.             toolTip.autoSize = TextFieldAutoSize.CENTER; 
  64.             toolTip.x = owner.mouseX + 16;   
  65.             toolTip.y = owner.mouseY - 24; 
  66.             //设置动态文本样式 
  67.             format = new TextFormat(); 
  68.             format.font = "_sans"
  69.             format.leftMargin = 4
  70.             format.rightMargin = 4
  71.             format.size = 12
  72.             toolTip.setTextFormat(format); 
  73.             owner.addChild(toolTip); 
  74.         }        
  75.         /** 
  76.          * CuPlayer.com提示 隐藏提示文本 
  77.          */ 
  78.         private static function hideToolTip(e : MouseEvent) : void { 
  79.             toolTip.visible = false;   
  80.             owner.removeEventListener(MouseEvent.MOUSE_OVER, showToolTip); 
  81.             owner.removeEventListener(MouseEvent.MOUSE_OUT, hideToolTip);   
  82.         }    
  83.         /** 
  84.          * CuPlayer.com提示 返回特定文本 
  85.          *  
  86.          * @param   target  目标对象 
  87.         */      
  88.         private static function findText(owner:InteractiveObject) : String { 
  89.             var index : int = owners.indexOf(owner); 
  90.             return texts[index]; 
  91.         } 
  92.     } 

用静态类实现的,理论上应该比较节约资源。这里用了两个数组传递text参数,算是一个小技巧。AS3ToolTip用法很简单,先设定它的root,再 调用其create方法。create方法的owner参数限制为InteractiveObject类型,不过我想已经够用了。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器