PDA

Просмотр полной версии : Поведение Bitmap и Sprite на Stage


SeaQuest
01.12.2009, 15:50
Поведение таково:
1. Чайлдим на Stage Bitmap.
2. Чайлдим на Stage Sprite.
3. Назначаем Listener на Stage.
В приходящем e:Event если сравнить e.target is Stage, для Bitmap будет true, для Sprite false.

Отчего проблема: раз битмап стал с какого-то перепоя стэйджем, то и координаты битмапа, какие бы они не были до этого будут равны 0,0 - т.е. координаты Stage.
Со спрайтом проблем нет, он то остался собой и его заданные координаты определяются верно.

И так со всем похоже куда не причайлдишь битмап - он становится частью контейнера, куда его причайлидили, и в итоге невозможно определить координаты битмапа.

kackbip
01.12.2009, 16:07
Какой листенер назначали?
И с какого перепуга у вас ( (экземпляр Event) is Stage)==true?
Чето вы напутали.

SeaQuest
01.12.2009, 16:11
Ой, ошибся, исправил на e.target. И вот этот экземпляр как раз таки is Stage = true. То же самое проделал, но в качестве подложки был пустой Sprite. В итоге по клику на битмапу она становилась is Sprite = true

Листенер stage.addEventListener(MouseEvent.CLICK, clicks_handler);

kackbip
01.12.2009, 16:20
Так битмапа и не генерит событие клика
А с координатами, скорее всего у вас косяк...

SeaQuest
01.12.2009, 16:28
Почему не генерит? Еще как генерит. С координатами все Ок, спрайты и мувики дают верные координаты. Проверьте и убедитесь сами.

kackbip
01.12.2009, 16:47
Вы в хелпе битмапу гляньте. Она не генерит событие клика и потому target==Stage

SeaQuest
01.12.2009, 17:13
Чиорт, действительно. Спасибо. А казалось что все нормально, так как моя задача была выяснить прозрачность пикселя, которая прекрасно выяснялась через draw и getPixel32. Но все же если причайлдить эту битмапу в спрайт контейнер, то по клику на область битмапы событие будет создаваться, только как будто это событие создал спрайт. Получается запутанно. А как тогда определить координаты битмапов, если их там несколько и простым getChildAt не отделаешься, т.к. не знаешь индекс нужной битмапы?

wvxvw
01.12.2009, 17:26
getObjectsUnderPoint()

SeaQuest
01.12.2009, 19:46
getObjectsUnderPoint(). В параллельном проекте пришлось отказаться от него т.к. адоубы не решили глюк с этим методом при скейленых объектах(официально признанный глюк). Сам не хочу, т.к. не ровен час придется воспользоваться скейлом и понесется.

Добавлено через 56 секунд
Пока что выход оборачивать все в Sprite контейнеры. Через одно место, конечно.

dimarik
01.12.2009, 22:24
А Вам никто и не обещал, что Bitmap будет отвечать именно Вашим требованиям. Потому рассуждения об "одних местах" упираются только в Ваш опыт разработки.

SeaQuest
02.12.2009, 15:29
Так и есть. Правда у меня все красиво построено и стоит автоматическая оборачивалка в любой объект, перед закладкой его в библиотеку объект. :bb: