首先,我们先来看看实际效果。
怎么样,也想在自己的FLASH里加上这一效果吧。好!现在,我们一步步来实现。
我们先新建一个 AS 文件,ToolTips.as。内容如下:
class ToolTip
{
private var target:MovieClip;
private var tipIID:Number;
private var label:String;
public static var duration:Number;
public static var activeTip:ToolTip;
private var __xoffset:Number;
private var __yoffset:Number;
private var __backgroundColor:Number;
private var __borderColor:Number;
private var __textColor:Number;
public function ToolTip(t:MovieClip, l:String)
{
target = t;
if(target.useHandCursor) target.useHandCursor = false;
label = l;
duration = 2000;
// default offsets (based on the reg point of the target mc)
__xoffset = 15;
__yoffset = -10;
// default colors
__backgroundColor = 0xFFFFCC;
__borderColor = 0x000000;
__textColor = 0x000000;
var hook:ToolTip = this;
target.onRollOver = function(){ hook.show(); }
}
private function show():Void
{
// check to see if we are the same tip, return if so
if(label == ToolTip.activeTip.label) return;
var hook:ToolTip = this;
if(ToolTip.activeTip != null) ToolTip.activeTip.hide();
target.createTextField("toolTip", 500, __xoffset, __yoffset, 150, 22);
var tipTextFormat = new TextFormat();
with(tipTextFormat)
{
font = "Tahoma";
align = "left";
size = 11;
leftMargin = 4;
}
var tipFieldProps =
{
autoSize:"left", type:"dynamic", embedFonts:false,
selectable:false, background:true, border:true,
backgroundColor:__backgroundColor, borderColor:__borderColor,
textColor:__textColor
}
// set the properties
for(var n:String in tipFieldProps) { target.toolTip[n] = tipFieldProps[n]; }
// extra spacing because of leftMargin
target.toolTip.text = label add " ";
target.toolTip.setTextFormat(tipTextFormat);
ToolTip.activeTip = this;
clearInterval(tipIID);
tipIID = setInterval(this, "hide", duration);
}
private function hide():Void
{
clearInterval(tipIID);
target.toolTip.removeTextField();
ToolTip.activeTip = null;
}
// -------------
// getter/setter
// -------------
public function set backgroundColor(n:Number):Void { __backgroundColor = n; }
public function get backgroundColor():Number { return __backgroundColor; }
public function set borderColor(n:Number):Void { __borderColor = n; }
public function get borderColor():Number { return __borderColor; }
public function set textColor(n:Number):Void { __textColor = n; }
public function get textColor():Number { return __textColor; }
public function set xoffset(n:Number):Void { __xoffset = n; }
public function get xoffset():Number { return __xoffset; }
public function set yoffset(n:Number):Void { __yoffset = n; }
public function get yoffset():Number { return __yoffset; }
}
保存一下文件。这个就是实现 TIPS 功能的类文件。接着,我们在与 ToolTips.as 同一目录下新建一个 FLA 文件 ToolTips_01.fla 。文件里,包含两个层, 分别是 action 和 main 。顾名思义,action 是用来写代码的。main 我们是用来放置图形或者其他可视元素。如下图

然后,我们插入一个 MovieClip 画一个矩形,打开 库面板 Library 命名为 box 。

回到主场景,点击 action 层,按F9打开动作面板,编写以下代码。
//主程序函数
createToolTips = function():Void
{
var labels:Array = new Array("ABC\nCode: 00-0000", "DEF\nCode: 00-0001", "GHI\nCode: 00-0002", "JKL\nCode: 00-0003", "MNO\nCode: 00-0004");
//提示内容数组
for(var i:Number = 0; i < 5; i++)
{
//循环往场景中添加名为 box 的 MovieClip
var icon:MovieClip = this.attachMovie("box", "box_" add String(i), i, {_x:20, _y:(40 * i) + 20});
var myToolTip:ToolTip = new ToolTip(icon, labels[i]);
//引用ToolTip类
myToolTip.backgroundColor = 0xFFDBC8;
}
};
createToolTips();//调用主程序
保存文件,按CTRL + ENTER测试效果。