Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.11.2017, 18:03
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
По умолчанию Всплывающая подсказка

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

Старый 24.11.2017, 18:33
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 2  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Appleman добавь контейнер выше остальных и туда добавляй подсказку. Я бы вообще вынес подсказку в отдельный класс, ибо нечего ей делать в классе иконки

Старый 24.11.2017, 20:02
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Appleman Посмотреть сообщение
Друзья, возник ещё один вопрос. Добавляю на сцену иконку, в классе которой предусмотрен TextField для всплывающей подсказки, которая появляется рядом при наведении мыши. Проблема в том, что если поблизости имеются другие компоненты, добавленные позже, то подсказка автоматически оказывается на более низкой глубине и частично перекрывается этими компонентами. Как сделать, чтобы всегда оказывалась поверх остальных?
Обычно такие подсказки (которые называются туллтипы, англ. Tooltip) Делаются в отдельном контроллере, и вызываются через статические методы. А добавлять подсказку можно прямо на stage
__________________
Ко мне можно и нужно обращаться на ты)

Старый 24.11.2017, 22:26
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 4  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
Appleman добавь контейнер выше остальных и туда добавляй подсказку. Я бы вообще вынес подсказку в отдельный класс, ибо нечего ей делать в классе иконки
Ну почему же нечего? Мне показалось, что очень даже удобно получилось намутить класс, подбирающий по запросу иконки: картинку, текст всплывающей подсказки на нужном языке. Хотя да, исходные объекты - из разных классов. Можно подробнее на счёт отдельного контейнера? Если я цепляю к иконке, то по определению ограничен её контейнером.

Цитата:
Сообщение от caseyryan Посмотреть сообщение
Обычно такие подсказки (которые называются туллтипы, англ. Tooltip) Делаются в отдельном контроллере, и вызываются через статические методы. А добавлять подсказку можно прямо на stage
Да, имеются в виду именно они, спасибо за правильный термин. Можно подробнее про отдельный контроллер и статические методы? Как это должно работать? У меня тоже была мысль непосредственно на stage добавлять. Но необходимость дополнительного контроллера даже близко не понимаю пока.

Старый 24.11.2017, 22:52
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 5  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
а как же мантра что stage приложению не принадлежит и лежать там должен только главный контейнер - root?

Старый 24.11.2017, 23:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Эта страсть неистребима, засорять стейдж разными выкидышами. Вот вроде ничего не мешает иметь специальный слой поверх всего прямо в главном Вью, никаких проблем СРАЗУ разделить все отображение по слоям, чтобы HUD был всегда поверх мира, слой для главных Меню — поверх HUDа, а подсказки поверх всего (кроме, может быть, слоя с экраном для видеозаставок). Но нет, проще выплюнуть что-нибудь на стейдж.

Статический класс для подсказок хорош тем, что предоставляет один ларек для обращений, или точку входа, или как там. Правда, всем непонятным элементам придется его импортить, чтоб зарегистрироваться, но если их не катастрофически много, то почему бы и нет (а если много, то явно интерфейс требует пересмотра — игрок не должен сидеть и в задумчивости наводить мыша на каждый объект на экране, вытаясь понять что это с помощью подсказок). Если в хинте (тултипе, сорри) раскрывается дополнительная информация (не ЧТО, а ПОЧЕМУ например), то другое дело.. Но тогда надо сначала продумать механику — будет ли элемент сообщать Менеджеру подсказок только текст подсказки, или будет передавать готовый ДисплейОбжект с картинками, шкалами и графиками, который соберет сам.

А в остальном обычно делают так: элемент, который хочет рассказа о себе, регистрируется у Менеджера через статик метод register(), в который передает ссылку на себя и текст/готовый хинт, и может быть политику по размещению хинта (типа "сверху по центру, не двигать за мышкой"). Менеджер оформляет подписку на маусОвер/маусМув/маусАут для этого объекта и сохраняет текст/ДО и политику например в Dictionary. Когда с объектом случится запланированный наезд мышой, Менеджер закидывает его хинт в специальный высоколежащий слой для подсказок, а когда надо — вынимает его оттуда.

Менеджер также должен предоставить метод unregister(), который объект вызовет перед смертью в своем методе destroy().
__________________
Reality.getBounds(this);

Старый 25.11.2017, 15:08
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Вот вроде ничего не мешает иметь специальный слой поверх всего прямо в главном Вью, никаких проблем СРАЗУ разделить все отображение по слоям, чтобы HUD был всегда поверх мира, слой для главных Меню — поверх HUDа, а подсказки поверх всего (кроме, может быть, слоя с экраном для видеозаставок). Но нет, проще выплюнуть что-нибудь на стейдж.
Слои слоями, а подсказки можно легко кидать на stage. Ничего плохого в этом нет, если у подсказки есть встроенное время жизни. У меня это обычно в районе 3 секунд было. После чего она сама удаляется снова в пул. Полностью автономная система. А вот такие высказывания вроде "ни в коем случае нельзя ничего кроме root добавлять на stage" мне напоминают паранойю) Если бы разработчики языка не хотели, чтобы что-то можно было добавлять на stage, то к ней просто не было бы доступа
__________________
Ко мне можно и нужно обращаться на ты)

Старый 25.11.2017, 15:19
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 8  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Эта страсть неистребима, засорять стейдж разными выкидышами. Вот вроде ничего не мешает иметь специальный слой поверх всего прямо в главном Вью, никаких проблем СРАЗУ разделить все отображение по слоям, чтобы HUD был всегда поверх мира, слой для главных Меню — поверх HUDа, а подсказки поверх всего (кроме, может быть, слоя с экраном для видеозаставок). Но нет, проще выплюнуть что-нибудь на стейдж.
Спокойно! Никто никуда ничего пока не выкидывает. Я потому и спрашиваю, что почуял, шняга какая-то выходит. Поясни, плиз, как размечать слои в главном вью? И как дочерние вью получат доступ к этим слоям?

Цитата:
Статический класс для подсказок хорош тем, что предоставляет один ларек для обращений, или точку входа, или как там. Правда, всем непонятным элементам придется его импортить, чтоб зарегистрироваться, но если их не катастрофически много, то почему бы и нет (а если много, то явно интерфейс требует пересмотра — игрок не должен сидеть и в задумчивости наводить мыша на каждый объект на экране, вытаясь понять что это с помощью подсказок).
Почему сразу пересматривать? Мне кажется, что это хорошая привычка - добавлять тултипы ко всем графическим элементам интерфейса для удобства игрока. В конце концов, там где одному видится сердце, другой увидит жопу. Дело такое.

На счёт импортить и регистрироваться, я тоже думал об этом, но пришёл к тому, что правильнее всё-таки обращаться к подобному "статическому" классу, который предоставит объект "под ключ", чем каждый раз по отдельности ломиться за иконкой в один класс, за полем для подсказки - в другой, и за текстом - в третий.

Цитата:
Если в хинте (тултипе, сорри) раскрывается дополнительная информация (не ЧТО, а ПОЧЕМУ например), то другое дело.. Но тогда надо сначала продумать механику — будет ли элемент сообщать Менеджеру подсказок только текст подсказки, или будет передавать готовый ДисплейОбжект с картинками, шкалами и графиками, который соберет сам.
А что меняется, если раскрывается? Разве статический класс не может реализовать дополнительную логику, связанную с ПОЧЕМУ? Например, текст тултипа иконки зависит от значения какого-то свойства. Почему нельзя передать это значение (или экземпляр класса, содержащий это значение) прямо в статический метод, и всё сделать в нём?

Цитата:
А в остальном обычно делают так: элемент, который хочет рассказа о себе, регистрируется у Менеджера через статик метод register(), в который передает ссылку на себя и текст/готовый хинт, и может быть политику по размещению хинта (типа "сверху по центру, не двигать за мышкой"). Менеджер оформляет подписку на маусОвер/маусМув/маусАут для этого объекта и сохраняет текст/ДО и политику например в Dictionary. Когда с объектом случится запланированный наезд мышой, Менеджер закидывает его хинт в специальный высоколежащий слой для подсказок, а когда надо — вынимает его оттуда.

Менеджер также должен предоставить метод unregister(), который объект вызовет перед смертью в своем методе destroy().
Я правильно уловил, что главная суть и предназначение этой регистрации - это добавление слушателя событий экранного объекта? Скажи, пожалуйста, если использовать Dictionary, то что уместно использовать в нём в качестве ключей? Сами экранные объекты: иконки, кнопки, шкалы и т.п.? А если они также "собираются на лету" в рантайме?

Старый 25.11.2017, 16:12
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Поясни, плиз, как размечать слои в главном вью?
создать переменные типа Спрайт, наделать экземпляров класса Спрайт, добавить их в отображение в нужном порядке и больше этот порядок не менять.
Цитата:
И как дочерние вью получат доступ к этим слоям?
Никак. Им не надо. Главный Вью сам запихает кого надо куда надо, или даст ссылки на нужные слои их Менеджерам.
Цитата:
Разве статический класс не может реализовать дополнительную логику
Может, почему нет. Только тогда придется заводить отдельные методы с "логикой" для каждого вида тултипов, а что-то мне подсказывает что их будет не два и не три.
Цитата:
главная суть и предназначение этой регистрации - это добавление слушателя событий
Нет. Суть в том чтобы отдать в руки профессионала работу, не относящуюся к области ответственности самих объектов, вместо того чтобы учить каждый объект правильно показывать свою подсказку.
Цитата:
А если они также "собираются на лету" в рантайме?
Эмм... ну так ВСЕ собираются на лету в рантайме.. Должен помереть — сделай анрегистр() и все, свободен удаляться.. Или я чего то не понял в вопросе? Может, ты имеешь ввиду что регистрация должна происходить при создании класса Хинт? Так нет же — при создании объектов. Сам объект, или тот кто его создает, проводит регистрацию объекта в Хинте.
__________________
Reality.getBounds(this);

Старый 25.11.2017, 16:39
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 10  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Ничего плохого в этом нет, если у подсказки есть встроенное время жизни.
Ничего плохого нет ровно до тех пор,пока stage один.
Кейс:флэшка грузится внутрь контейнера и владелец контейнера добавляет оверлей поверх флэшки и тут начинают выскакивать "выкидыши" поверх оверлея и вообще всего на свете.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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