最近要用到鼠标的提示功能,可惜as3中没有,就在网上了些别个写的,简单改了下,用起来还不错:
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;
import flash.display.Shape;
import flash.display.Graphics;
/**
* 提示文本
* @author Flying http://www.riafan.com
*/
public class AS3ToolTip{
private static var toolTip : TextField;
private static var format : TextFormat;
private static var owner :DisplayObjectContainer;
private static var sprite:Sprite;
//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(target:InteractiveObject, text: String) : void {
owners.push(target);
texts.push(text);
target.addEventListener(MouseEvent.MOUSE_OVER, AS3ToolTip.showToolTip);
target.addEventListener(MouseEvent.MOUSE_OUT, AS3ToolTip.hideToolTip);
}
/**
* 显示提示文本
*/
private static function showToolTip(e : MouseEvent) : void {
var target:InteractiveObject = e.target as InteractiveObject;
//初始化动态文本
toolTip = new TextField();
toolTip.visible = true;
toolTip.text = findText(InteractiveObject(e.currentTarget));
toolTip.background = true;
toolTip.backgroundColor= 0xffffff;
toolTip.multiline = false;
toolTip.wordWrap = false;
toolTip.autoSize = TextFieldAutoSize.LEFT;
toolTip.x = 3;
toolTip.y = 3;
//设置动态文本样式
format = new TextFormat();
format.font = "微软雅黑";
format.bold = true;
format.color = 0x666666;
format.leftMargin = 4;
format.rightMargin = 4;
format.size = 11;
toolTip.setTextFormat(format);
//设置提示的背景样式
sprite = new Sprite;
var g:Graphics = sprite.graphics;
g.beginFill(0xB8B7D7,0.8);
g.drawRoundRect(0,0,toolTip.width + 6,toolTip.height + 6,4,4);
g.endFill();
sprite.addChild(toolTip);
sprite.x = target.x + target.width - 20;
sprite.y = target.y + target.height + 5;
owner.addChild(sprite);
}
/**
* 隐藏提示文本
*/
private static function hideToolTip(e : MouseEvent) : void {
//toolTip.visible = false;
sprite.visible = false;
owner.removeEventListener(MouseEvent.MOUSE_OVER, showToolTip);
owner.removeEventListener(MouseEvent.MOUSE_OUT, hideToolTip);
}
/**
* 返回特定文本
*
* @param target 目标对象
*/
private static function findText(owner:InteractiveObject) : String {
var index : int = owners.indexOf(owner);
return texts[index];
}
}
}
本文介绍了一个简单的AS3鼠标提示功能实现方法,通过自定义类AS3ToolTip为Flash项目中的对象添加鼠标悬停时显示提示文本的功能。该实现包括创建提示文本、设置样式及位置等步骤。
124

被折叠的 条评论
为什么被折叠?



