![]() |
|
||||||||||
|
|||||
|
Цитата:
У меня вообще система работает так (тут немного урезанный вариант): 1) Все объекты, у которых может быть подсказка применяют интерфейс ITooltip, в котором есть геттер / сеттер для поля hintText и localToGlobal(point:Point):Point вот так: public interface ITooltip { function set hintText(value:String):void; function get hintText():String; function localToGlobal(point:Point):Point; } ROLL_OVER, ROLL_OUT 3) Дальше в обработчике ROLL_OVER проверяет что это за объект private function onRollOver(e:MouseEvent):void { if (e.target is ITooltip) { showTooltip(e.target as ITooltip); // показываем подсказку } } private function showTooltip(tooltip:ITooltip):void { _currentHint = getHintFromPool(); // постоянно юзает один и тот же лейбл для подсказок. Больше не требуется _currentHint .setText(tooltip.hintText); var position:Point = tooltip.localToGlobal(new Point()); _currentHint x = position.x; _currentHint .y = position.y; // тут еще можно рассчитать положение со смещением, чтобы за границами экрана не вылезал, если близко к краю stage.addChild(_currentHint ); } private function onRollOut(e:MouseEvent):void { if (_currentHint) { _currentHint.remove(); // там подсказка еще подписана на событие removedFromStage, чтобы возвращаться в пул _currentHint = null; } } 6) Профит Не знаю как там у тебя что показывается поверх оверлеев. С этой системой такое в принципе невозможно. Когда я ещё писал на флеше, эта либа у меня успешно кочевала из проекта в проект и никогда не глючила п.с. Цитата:
![]()
__________________
Ко мне можно и нужно обращаться на ты) |
![]() |
Часовой пояс GMT +4, время: 07:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|