Как обрабатывать события мыши на закрытых (перекрывающихся) экранных объектах во flash / flex? - PullRequest
0 голосов
/ 03 сентября 2011

мои вопросы мало похожи на некоторые из ранее заданных вопросов о перекрывающихся спрайтах / мувиклипах, таких как this . Но мое требование немного отличается от них.

Я хочу обработать события мыши для всех спрайтов на сцене, включая те, которые скрыты позади (или перекрыты, или закрыты), и главное условие - я хочу обработать закрытый спрайт (скрытый за другим спрайтом). Например, скажем, у меня есть sprite1 и sprite2 на сцене, и я хочу начать перетаскивание всякий раз, когда я нажимаю на спрайт, и прекращаю перетаскивать после другого щелчка.

Это можно сделать легко, но проблема и мое главное требование в том, что если я перетащу спрайт1 и урону его точно поверх спрайта2, тогда спрайт2 будет спрятан за спрайтом1. Я не смогу перетащить спрайт2 без перемещения спрайт1 первый. Если вы играли в игру империй и аллей в Zynga на Facebook, она обрабатывается отдельно, именно так она работает в этой игре, событие мыши запускается на спрайте за перекрывающимся спрайтом, если у вас есть два спрайта, перекрывающих один спрайт, чем мышь событие запускается на последнем спрайте, а не на переднем, независимо от того, существует ли только одно перекрытие спрайтов, два или три, и это происходит со спрайтами неправильной формы (не только с прямоугольниками)

если кто-нибудь может дать мне понять, как zynga могла реализовать это, или помочь мне узнать, как этого добиться, это будет очень полезно

спасибо

1 Ответ

0 голосов
/ 03 сентября 2011

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

При программировании игр вы часто внедряете сеточную систему. Если это так, у программиста есть запись о том, где все спрайты размещены в сетке. Затем программист может прослушать щелчок по всему средству визуализации сетки и обработать выбранный объект, сопоставив положение мыши с записями сетки.

...