Показать сообщение отдельно
Старый 04.11.2012, 13:57
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Есть ли вариант каким-то образом упростить задачу?
Хех, есть и не один.
Подхода к навешиванию тултипа на компонент знаю 3:

1. Регистрация компонента, над которым нужно показать тултип в глобальном классе с хранилищем всех связей и удаление регистрации при убирании компонента с экрана
Никогда не используйте этот подход. Окромя утечек памяти и кучи кода регистрации/разрегистрации никаких удобств не получите

2. Создание для каждого компонента объекта TooltipHandler, который сам подписывается на события мыши компонента, имеет ссылку на глобальный регистр тултипов, если оно надо, и который спокойно отправляется в небытиё вместе с компонентом, на который навешан.
Компоненты нифига не должны реализовывать - можно навесить тултип на что угодно, хоть на простой спрайт. Что показывать, какой текст или картинку указывается в самом экземпляре TooltipHandler при навешивании.

3. Ловля событий MOUSE_OVER и MOUSE_OUT (не ROLL OVER/OUT - они не всплывают!) на stage, поиск через target события компонента, который реализует интерфейс ITooltipable с полем data, который говорит что показывать.
Здесь недостатком является необходимость реализации интерфейса. Это серьезный недостаток: вот есть у вас сторонняя кнопка и чё теперь, её наследовать и интерфейс реализовывать?

Как над всеми компонентами показывать? Пути здесь 2:
- просто добавляем новый тултип на stage - он оказывается выше всех
- делаем новый Sprite, добавяем его вначале поверх всех остальных контейнеров и далее создаём тултипы на нём

Тултиповая система с преферансом и поэтессами, но на haXe (примеры в том же репозитоии и скомпилированные в swf тоже есть):
https://github.com/cser/temperate/tr...erate/tooltips
Но, возможно, Вам не надо столько поэтесс (тем более там нельзя сделать плавное перетекание тултипа с компонента на компонент и другие вещи) и вы сами соберёте что-то простое за пару часов.