Bueno, como es relativamente corta, la pongo, es para crear tooltips en un momento:
Código :
class tooltip {
private var hit:Boolean = new Boolean (false);
public var follow:Boolean = new Boolean (false);
public var fadeVelo:Number = new Number (20);
private var embed:Boolean = new Boolean ();
private var id:Number = new Number ();
private var target:MovieClip;
private var otarget:MovieClip;
private var coords:Object = new Object ();
function tooltip (tg:MovieClip, tx:String, ht:Boolean, mu:Boolean, width:Number, style:TextFormat, eb:Boolean, bk:Boolean, color, bo:Boolean, boc) {
target = tg._parent;
otarget = tg;
target.createTextField (otarget._name + "_tooltip",target.getNextHighestDepth (),0,0,width,1);
target[otarget._name + "_tooltip"]._visible = false;
target[otarget._name + "_tooltip"].background = bk;
target[otarget._name + "_tooltip"].backgroundColor = color;
target[otarget._name + "_tooltip"].embedFonts = eb;
embed = eb;
if (embed == true) {
target[otarget._name + "_tooltip"]._alpha = 0;
}
if (bo == true) {
target[otarget._name + "_tooltip"].border = true;
target[otarget._name + "_tooltip"].borderColor = boc;
} else {
target[otarget._name + "_tooltip"].border = false;
}
target[otarget._name + "_tooltip"].selectable = false;
target[otarget._name + "_tooltip"].autoSize = "left";
target[otarget._name + "_tooltip"].multiline = mu;
if (mu == true) {
target[otarget._name + "_tooltip"].wordWrap = true;
} else {
target[otarget._name + "_tooltip"].wordWrap = false;
}
target[otarget._name + "_tooltip"].html = ht;
if (ht == true) {
target[otarget._name + "_tooltip"].htmlText = tx;
} else {
target[otarget._name + "_tooltip"].text = tx;
}
target[otarget._name + "_tooltip"].setTextFormat (0,target[otarget._name + "_tooltip"].length,style);
id = setInterval (this, "period", 30);
}
public function removeTooltip () {
if (embed) {
period = function () {
target[otarget._name + "_tooltip"]._alpha -= fadeVelo;
if (target[otarget._name + "_tooltip"]._alpha <= 0) {
target[otarget._name + "_tooltip"].removeTextField ();
clearInterval (id);
}
};
}
return target[otarget._name + "_tooltip"] != undefined;
}
private function period () {
if (otarget.hitTest (_xmouse, _ymouse, false)) {
target[otarget._name + "_tooltip"]._visible = true;
if (embed == true) {
if (target[otarget._name + "_tooltip"]._alpha < 101 - fadeVelo) {
target[otarget._name + "_tooltip"]._alpha += fadeVelo;
}
}
if (follow == true) {
hit = true;
target[otarget._name + "_tooltip"]._x = target._xmouse;
target[otarget._name + "_tooltip"]._y = target._ymouse + 25;
} else {
if (hit == false) {
hit = true;
target[otarget._name + "_tooltip"]._x = target._xmouse;
target[otarget._name + "_tooltip"]._y = target._ymouse + 25;
}
}
coords = {x:target[otarget._name + "_tooltip"]._x + target[otarget._name + "_tooltip"]._width, y:target[otarget._name + "_tooltip"]._y + target[otarget._name + "_tooltip"]._height};
target.localToGlobal (coords);
if (coords.x > Stage.width) {
target[otarget._name + "_tooltip"]._x = target._xmouse - target[otarget._name + "_tooltip"]._width;
}
if (coords.y > Stage.height) {
target[otarget._name + "_tooltip"]._y = target._ymouse - target[otarget._name + "_tooltip"]._height;
}
} else {
if (embed == true) {
if (target[otarget._name + "_tooltip"]._alpha > fadeVelo - 1) {
target[otarget._name + "_tooltip"]._alpha -= fadeVelo;
} else {
target[otarget._name + "_tooltip"]._visible = false;
}
} else {
target[otarget._name + "_tooltip"]._visible = false;
}
hit = false;
}
}
}
Bueno, las cosas que hay que aclarar: otarget viene de un argumento donde se le pasa el objeto sobre el que va a funcionar el tooltip. Target guarda un referencia al objeto contenedro de otarget, donde se crea el cmapo de texto (soy consciente de que no se puede usar esta clase para hacer un tooltip de _root, pero no es el caso).
La funcion removeTooltip, si las fuentes embebidas estan activadas hace un fade con _alpha y luego borra la instancia de TextField. Y aqui es donde supongo que falla, o nose