Цитата:
|
Но дело в том, что ведь у некоторых объектов не будет текста. У спрайта же нет текста.
|
Поэтому и говорю:
Цитата:
|
Там надо проверять, является ли объект, на который навели мышь тем, что нам нужно или нет, а потом получать доступ к какому-нибудь свойству этого объекта, в котором хранится текст.
|
Цитата:
|
Вот только я не понимаю, почему когда я навожу мышку в пустоту - в инфопанели ничего не появляется?
|
Потому что белый фон - это не дисплей объект. Вешая на стейдж слушатель мышиных событий, они будут слушаться всеми детьми стейджа. Если на месте курсора нет ребенка - некому ловить событие. Попробуйте заменить пустой белый фон простым белым спрайтом на весь экран (ради интереса, на решение проблемы это никак не влияет)
Вам нужно сделать свой Sprite, в котором будет свойство .containedText, затем проверять, кто именно поймал событие, и если это наш Sprite с текстом - выводить в текстовое поле этот текст, а если любой другой объект - выводить сообщение "Это неправильный объект. И он делает неправильный текст":

Код AS3:
//Наш класс объекта с текстом
package
{
import flash.display.Sprite;
public class MyLittleSpriteWithText extends Sprite
{
public var containedText:String;
public function MyLittleSpriteWithText(textToContain:String)
{
containedText = textToContain;
}
}
}
Код в Main (канву с вашего оригинала скопировал):

Код AS3:
public class Main extends Sprite
{
...
public function Main()
{
var myTextedSprite1:MyLittleSpriteWithText = new MyLittleSpriteWithText("ПИСЯ");
addChild(myTextedSprite1);
//--- Вешаем слушатель на стэйдж ---//
stage.addEventListener(MouseEvent.MOUSE_OVER, showInfo);
}
private function showInfo(e:MouseEvent)
{
var currentTarget:MyLittleSpriteWithText = e.target as MyLittleSpriteWithText;
if(currentTarget)
{
trace(currentTarget.containedText);
}
else
{
trace("Это неправильный объект. И он делает неправильный текст");
}
}
}
Приведение (

) с помощью оператора
as позволит избавиться от рантайм ошибок приведения, но придется проверять конечную переменную на
null. При неуспешном приведении переменной
currentTarget присвоится
null и условие
if(currentTarget) не выполнится