Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   тултипы во всем проекте (игре) (http://www.flasher.ru/forum/showthread.php?t=186487)

randomnoob 04.11.2012 08:59

тултипы во всем проекте (игре)
 
Привет, такой вопрос.

Допустим, есть игра, в которой куча элементов, куча разных экранов и тд. Необходимо сделать тултипы к нужным элементам таким образом, чтобы они (тултипы) показывались всегда поверх остальных элементов и перемещались за курсором.

Я не могу придумать, как это все можно организовать таким образом, чтобы для каждого модуля не писать свой код тултипов. Допустим, есть экран генерации персонажа. Написал тултипы для этого экрана. Потом перешли в туториал, там тоже тултипы, потом в условную кузницу, там тоже тултипы.

Есть ли вариант каким-то образом упростить задачу? Прошу прощения за сумбурность, немного голова едет, ничего не придумывается.

Wolsh 04.11.2012 11:26

Цитата:

Я не могу придумать, как это все можно организовать таким образом, чтобы для каждого модуля не писать свой код тултипов....Есть ли вариант каким-то образом упростить задачу?
Вы код в кадрах чтоли пишете? Что за "для каждого модуля свой код тултипов"? Напишите класс для показа тултипов, создайте отдельный контейнер поверх контейнера с игрой и HUD'ом, и пусть этот класс размещает подсказки только в нем...

expl 04.11.2012 13:57

Цитата:

Есть ли вариант каким-то образом упростить задачу?
Хех, есть и не один.
Подхода к навешиванию тултипа на компонент знаю 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
Но, возможно, Вам не надо столько поэтесс (тем более там нельзя сделать плавное перетекание тултипа с компонента на компонент и другие вещи) и вы сами соберёте что-то простое за пару часов.

Astraport 04.11.2012 15:57

Юзаю иногда этот простой и удобный ToolTip class


Часовой пояс GMT +4, время: 01:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.