2013-09-10 4 views
3

В настоящее время я программирует немного флеш игры, и я столкнулся с какой-то проблемой:Получить нажмите coordiante от слушателя в AS3

У меня есть спрайт, давайте назовем его GameBoard, которая содержит фоновое изображение и много других маленьких спрайтов. Моя проблема заключается в том, что игровой план накладывает на себя прослушиватель кликов, если мне удастся щелкнуть один из многочисленных спрайтов, содержащихся на игровом поле, localX и localY являются одним из небольших спрайтов.

Итак, мой вопрос:

Как я могу получить координаты моего щелчка относительно слушателя событий?

+0

Извинения, я не правильно прочитал вопрос. Обновлен мой ответ. – Jono

ответ

1

Довольно точно, это то, о чем вы просите.

Trigger event from child to parent in AS3

Это довольно распространенный вопрос - вы можете использовать свойство event.currentTarget вместо event.target ссылаться на объект, к которому вы добавили прослушиватель событий.

Чтобы вызвать событие мыши для только игрового поля:

[gameboard_instance_name].mouseChildren = false; 
//[gameboard_instance_name].addEventListener(...); 
+0

да ... но нет. Мне нужно получить доступ к относительным координаторам мыши на моем игровом поле, а не о самом объекте (если в текущемTarget нет других «localX» и «localY», но я не видел никаких ...) –

+0

А, я думаю, я понимаю , Теперь вы можете получить доступ к игровому полю, но позиция мыши в событии все еще относится к ребенку. @ user1459015 см. редактирование. – Jono

0

Так где вы прикрепленного ваш обработчик щелчка:

gameboard.addEventListener(MouseEvent.CLICK, clickHandler); 

Тогда в обработчике вы можете сделать следующее:

function clickHandler(event:MouseEvent):void 
{ 
    // First way use stage point and convert to gameboard 
    var stagePoint:Point = new Point(event.stageX, event.stageY); 
    var gameboardPoint:Point = gameboard.globalToLocal(stagePoint); 

    // Second way, use the mouse position on the gameboard 
    // making sure that you only use this handler with the above listener 
    event.currentTarget.mouseX; 
    event.currentTarget.mouseY; 
} 
Смежные вопросы