[AS3]as3语言写的ToolTip类源代码实例
AS3核心类中没有ToolTip类,Flex中的ToolTip类没法用在AS3工程中,Aswing的JToolTip不错,不过如果仅仅为了使用这一个类而导入Aswing就不太明智了
AS3核心类中没有ToolTip类,Flex中的ToolTip类没法用在AS3工程中,Aswing的JToolTip不错,不过如果仅仅为了使用这一个类而导入Aswing就不太明智了。由于最近的项目需要用到ToolTip,我就索性自己写了一个,特与大家分享。
看下面源码。
- package {
- import flash.events.MouseEvent;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- import flash.display.Sprite;
- import flash.display.DisplayObjectContainer;
- import flash.display.InteractiveObject;
- /**
- * 提示文本
- * @author Flying http://localhost/wordpress
- */
- public class AS3ToolTip{
- private static var toolTip : TextField;
- private static var format : TextFormat;
- private static var owner :DisplayObjectContainer;
- //tooltip对象是否可用
- public static var enabled : Boolean = true;
- //目标对象数组
- private static var owners : Array = new Array();
- //文本对象数组
- private static var texts : Array = new Array();
- public function AS3ToolTip() {
- }
- /**
- * 获取/设置提示文本的顶级显示对象
- */
- public static function get root() :DisplayObjectContainer{
- return owner;
- }
- public static function set root(value :DisplayObjectContainer) : void {
- if (owner == null){
- owner = value;
- }
- }
- /**
- * 新建一个提示文本
- *
- * @param owner 要设置提示文本的目标对象
- * @param text 提示文本的内容
- */
- public static function create(owner:InteractiveObject, text: String) : void {
- owners.push(owner);
- texts.push(text);
- owner.addEventListener(MouseEvent.MOUSE_OVER, AS3ToolTip.showToolTip);
- owner.addEventListener(MouseEvent.MOUSE_OUT, AS3ToolTip.hideToolTip);
- }
- /**
- * 显示提示文本
- */
- private static function showToolTip(e : MouseEvent) : void {
- //初始化动态文本
- toolTip = new TextField();
- toolTip.visible = true;
- toolTip.text = findText(InteractiveObject(e.currentTarget));
- toolTip.background = true;
- toolTip.backgroundColor= 0xFFCC66;
- toolTip.border = true;
- toolTip.borderColor = 0x000000;
- toolTip.multiline = false;
- toolTip.wordWrap = false;
- toolTip.autoSize = TextFieldAutoSize.CENTER;
- toolTip.x = owner.mouseX + 16;
- toolTip.y = owner.mouseY - 24;
- //设置动态文本样式
- format = new TextFormat();
- format.font = "_sans";
- format.leftMargin = 4;
- format.rightMargin = 4;
- format.size = 12;
- toolTip.setTextFormat(format);
- owner.addChild(toolTip);
- }
- /**
- * CuPlayer.com提示 隐藏提示文本
- */
- private static function hideToolTip(e : MouseEvent) : void {
- toolTip.visible = false;
- owner.removeEventListener(MouseEvent.MOUSE_OVER, showToolTip);
- owner.removeEventListener(MouseEvent.MOUSE_OUT, hideToolTip);
- }
- /**
- * CuPlayer.com提示 返回特定文本
- *
- * @param target 目标对象
- */
- private static function findText(owner:InteractiveObject) : String {
- var index : int = owners.indexOf(owner);
- return texts[index];
- }
- }
- }
用静态类实现的,理论上应该比较节约资源。这里用了两个数组传递text参数,算是一个小技巧。AS3ToolTip用法很简单,先设定它的root,再 调用其create方法。create方法的owner参数限制为InteractiveObject类型,不过我想已经够用了。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...