![]() |
Создание инфо-панели для MOUSE_OVER
Пробую создать инфо-панель, на которой бы выводилась информация об объекте, который в данный момент находится под курсором.
Документ-класс, Main.as: Код AS3:
Который использует, созданный посредством галочки Export to ActionScript, библиотечный символ класса Info_panel. В этом символе есть динамический текст-филд, с именем инстанции: info_texter, не содержащий никакого текста. Код AS3:
И вот я хочу, чтобы информация с события e.target была передана этому текстфилду info_texter. И тогда он будет отображать имя объекта, на который указывает мышь. Пробую в основном классе сделать это посредством строки: Код AS3:
Цитата:
Как же тогда передать инфу в эту панель? |
У вас тут две ошибки сразу на самом деле.
Первая - вы пытаетесь получить доступ к приватном полю info_panel (кстати помните, что названия приватных полей лучше начинать писать с подчеркивания, а само имя CamelCase - _infoPanel?). Надо либо модификатор доступа на public, либо сделать геттер: Код AS3:
Код AS3:
Там надо проверять, является ли объект, на который навели мышь тем, что нам нужно или нет, а потом получать доступ к какому - нибудь свойству этого объекта, в котором хранится текст. |
Вложений: 1
KumoKairo, спасибо за наводку, исправил private на public, и ошибка исчезла.
С геттерами пока не хочу связываться, ибо сие езмь нечто чужеродное унд богомерзкое : ) С камелкейз и подчеркиваниями ок, щас исправлю. По поводу превращения объекта в String, кстати, проблем нет. Вроде всё нормально работает, вот смотрите: Хотя, подозреваю, что если просто Shape разместить, без засовывания его в Sprite, то он наверное не будет в инфопанели виден. |
Цитата:
Но в любом случае не то что надо) Вам же конкретный текст нужен а не тип объекта? |
KumoKairo, кстати да.
Но дело в том, что ведь у некоторых объектов не будет текста. У спрайта же нет текста. В идеале бы вообще иметь сообщения, навроде: "Текстовое поле", "Рамка экрана" (еще не реализована), "Инфо-панель", "Форма"(еще не реализована), "Пустота" (это если навести курсор в любое незанятное место). Но как это сделать? Наверное нужно некий внутренний switch-case написать, где перепрописывать. Вот только я не понимаю, почему когда я навожу мышку в пустоту - в инфопанели ничего не появляется? Ведь там должно быть например Stage, или имя экземпляра класса Main |
Вложений: 1
Цитата:
Цитата:
Цитата:
Вам нужно сделать свой Sprite, в котором будет свойство .containedText, затем проверять, кто именно поймал событие, и если это наш Sprite с текстом - выводить в текстовое поле этот текст, а если любой другой объект - выводить сообщение "Это неправильный объект. И он делает неправильный текст": Код AS3:
Код AS3:
|
Цитата:
Правда не совсем понятно, как на него слушатель повесить, может быть Код AS3:
Цитата:
Цитата:
Но мне, кстати, не нужно кого-то одного определять. Идея панели в том, чтобы она выдавала инфу по любому объекту, на который наводится мышь, не важно что это вообще. Поэтому свойство containedText по идее должно содержать не одно значение, а наверное некий набор, равный количеству объектов на экране. |
Я бы реализовал для объектов, которым нужно выводить справку, интерфейс IHint. Соответственно был бы геттер description, а в MOUSE_OVER проверял
Код AS3:
Код AS3:
Код AS3:
|
Цитата:
Это так же как купить холодильник и удивляться, почему в нем нет еды. |
KumoKairo эта тема точь в точь мои вчерашние слова. Вот если бы ТС хотел не по наведению, а по клику получать текст, как тогда, вешать на все обьекты слушателей down?
Добавлено через 12 минут Вы только не подумайте, что я к Вам придираюсь, просто мне хочется понимать про все-все нюансы, каким является стейдж и слушатели. Добавлено через 12 минут А то у мня у самого чувство, что я придираюсь... |
| Часовой пояс GMT +4, время: 19:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.