|
|
|||||
Получить id объекта при hitTest.
Программно создаются объекты:
for (var i:uint = 0; i <maxImages; i++){ var newimg:Image = new Image(); newimg.height = 100; newimg.width = 100; newimg.x = 100+ i*100; newimg.y = 200; newimg.source = 'images/' + i + 'img.png'; newimg.id = i + 'img'; this.addElement(newimg); } addEventListener(Event.ENTER_FRAME, startDragging); protected function startDragging(event:Event):void { if (newimg.hitTestPoint(hero.x, hero.y, true)){ trace ('Hero hitTest ' + event.currentTarget.id); //Это понятное дело не работает } } Спасибо. |
|
|||||
Далее, где вам нужно, ловите это событие и обращаетесь к event.target.
|
|
|||||
Цитата:
Цитата:
1. Создал новый ивент класс: package { import flash.events.Event; public class HitTestEvent extends flash.events.Event { public static const CONTROL_TYPE:String = "hit"; public var command:String; public function HitTestEvent(command:String) { super(CONTROL_TYPE); this.command = command; } } } if (newimg.hitTestPoint(hero.x, hero.y, true)) { newimg.dispatchEvent(new HitTestEvent('hit')); ); } if (newimg.hitTestPoint(hero.x, hero.y, true)) { dispatchEvent(new HitTestEvent(newimg.id)); } В любом случае трейсится все что угодно, но не id объектов. |
|
|||||
if (newimg.hitTestPoint(hero.x, hero.y, true)) { newimg.dispatchEvent(new HitTestEvent('hit') ); } // Здесь неясно куда вы вешаете слушатель. Попробуйте перехват событий: addEventListener(HitTestEvent.CONTROL_TYPE, eventHandler, true); // А в трейсе выведите event.target protected function eventHandler(event:HitTestEvent):void { trace(event.target); // [object Image] ? trace((event.target as Image).id); } |
|
|||||
bav, спасибо, но проблема не в этом. Только сейчас заметил, что hitTestPoint трейсится только для последнего объекта.
-De- видимо правильно заметил, что нужен перебор объектов. Но как? Все объекты выводятся, но hitTestPoint получается только для последнего из них. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Ну с кем хиттестится, того айди и выводит. В чем проблема-то?
Вы это пытаетесь сделать?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
-De-, я ж говорю - хиттест срабатывает только для последнего созданного объекта. В моем примере, если maxImages = 5, с id = '4img'. Остальные никак не реагируют, хотя если повесить на каждый создаваемый объект слушатель на мышиные события - то они срабатывают (мышиные события).
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Ээ а вы не догадывались, что хиттест будет срабатывать только для тех обьектов, для которых он будет вызываться?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Догадывался Сбило с толку то, что трейсились события. Оказывается, это от одного объекта исходило, близко расположены.
Хорошо. Я знаю id этих всех объектов. Как мне обратится к объекту зная Id? getChildByName выдает ошибку Не удается вызвать свойство или метод со ссылкой на объект "null". |
Часовой пояс GMT +4, время: 13:22. |
|
« Предыдущая тема | Следующая тема » |
|
|