Сам объект на ROLL_OVER которого редко что происходит

Код AS3:
package ***
{
***
import flash.display.Bitmap;
import flash.filters.DropShadowFilter;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
public class SkullInfo extends InteractivePNGControl
{
private var __button:Button
private var __background:Bitmap;
private var __icon:Bitmap;
private var __value:int = 0;
private var __textField:TextField;
private var __color:uint = 0x00;
private var __tooltip:Tooltip;
public function SkullInfo(controls:Controls)
{
super(controls);
__refresh();
}
public function get button():Button
{
if (!__button)
{
__button = new Button(controls);
__refresh();
}
return __button;
}
public function set background(value:Bitmap):void
{
if (__background && __background.parent)
this.removeChild(__background);
__background = value;
__refresh();
}
public function get background():Bitmap
{
return __background;
}
public function set icon(value:Bitmap):void
{
if (__icon && __icon.parent)
this.removeChild(__icon);
__icon = value;
__refresh();
}
public function get icon():Bitmap
{
return __icon;
}
public function set value(val:int):void
{
__value = val;
__refresh();
}
public function get value():int
{
return __value;
}
public function set color(value:uint):void
{
__color = value;
__refresh();
}
public function get color():uint
{
return __color;
}
public function set tooltip(value:String):void
{
if (!__tooltip)
__tooltip = new Tooltip(controls, this);
__tooltip.text = value;
}
public function get tooltip():String
{
return __tooltip.text;
}
private function __refresh():void
{
if (__background)
{
__background.y = 3;
this.addChild(__background);
}
if (__button)
{
__button.x = 65;
__button.y = 5;
this.addChild(__button);
}
if (__icon)
{
__icon.x = 60;
this.addChild(__icon);
}
if (!__textField)
{
__textField = TextFormats.defaultTextField;
__textField.filters = [new DropShadowFilter()];
}
__textField.defaultTextFormat = new TextFormat(TextFormats.EMBED_FONT, 13, __color);
__textField.text = value.toString();
__textField.autoSize = TextFieldAutoSize.LEFT;
__textField.x = 35 - __textField.width / 2;
__textField.y = 6;
this.addChild(__textField);
}
}
}
Базовый класс, класса выше, ничего интересного

Код AS3:
package ***
{
***
import com.mosesSupposes.bitmap.InteractivePNG;
public class InteractivePNGControl extends InteractivePNG implements IControl
{
private var __controls:Controls;
public function InteractivePNGControl(controls:Controls)
{
super();
__controls = controls;
}
public function get controls():Controls
{
return __controls;
}
}
}
Класс, в котором подписывается на события экземпляр класса SkullInfo
Подпись прямо в конструкторе.

Код AS3:
package ***
{
***
import com.ninemokeys.lib.BmdFactory;
import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class Tooltip extends SpriteControl
{
private static const TOOLTIP_BACKGROUND_IMAGE:String = "images/ui/tooltipBackground.png?v=2";
private var __object:InteractiveObject;
private var __text:String;
private var __textField:TextField;
private var __background:Bitmap;
private var __backgroundLoaded:Boolean = false;
private var __container:Sprite;
public function Tooltip(controls:Controls, object:InteractiveObject)
{
super(controls);
__object = object;
controls.images.addEventListener(ImagesEvent.IMAGES_LOAD_COMPLETE, __imagesLoadComplete);
controls.images.loadImages([TOOLTIP_BACKGROUND_IMAGE]);
__object.addEventListener(MouseEvent.ROLL_OVER, __over);
__object.addEventListener(MouseEvent.ROLL_OUT, __out);
}
public function set text(value:String):void
{
__text = value;
if (!__textField)
{
__textField = TextFormats.defaultTextField;
__textField.defaultTextFormat = TextFormats.tooltipFormat;
}
__textField.text = __text;
__textField.autoSize = TextFieldAutoSize.LEFT;
}
public function get text():String
{
return __text;
}
private function __imagesLoadComplete(e:ImagesEvent):void
{
controls.images.removeEventListener(ImagesEvent.IMAGES_LOAD_COMPLETE, __imagesLoadComplete);
__backgroundLoaded = true;
}
private function __over(e:MouseEvent):void
{
if (__backgroundLoaded && __text)
{
if (!__background)
{
var background:Bitmap = controls.images.getLoadedImage(TOOLTIP_BACKGROUND_IMAGE);
__container = new Sprite();
__background = new Bitmap(
BmdFactory.drawSliced9(
BmdFactory.slice9(background.bitmapData, new Rectangle(4, 4, background.width - 6, background.height - 6)), __textField.width + 8, __textField.height + 8));
}
}
else
return;
__refreshTooltipPosition();
__object.stage.addChild(__container);
__container.addChild(__background);
__textField.x = 3
__textField.y = 3
__container.addChild(__textField);
this.addEventListener(Event.ENTER_FRAME, __onEnterFrame);
}
private function __out(e:MouseEvent):void
{
this.removeEventListener(Event.ENTER_FRAME, __onEnterFrame);
if (__container && __container.parent)
__container.parent.removeChild(__container);
}
private function __onEnterFrame(e:Event):void
{
__refreshTooltipPosition();
}
private function __refreshTooltipPosition():void
{
if (__object.stage.mouseX + __container.width + 25 > __object.stage.stageWidth)
__container.x = __object.stage.mouseX - __container.width - 15;
else
__container.x = __object.stage.mouseX + 15;
__container.y = __object.stage.mouseY + 15
}
}
}
Пожалуй, это самый минимальный код одного из проблемных объектов, объекты поменьше проблем не имеют
Добавлено через 22 минуты
P.S Как только я базовый класс для проблемных объектов заменяю на Sprite, вместо InteractivePNG, все проблемы исчезают.