Взаимодействие мыши с вложенными мувиклипами в Away3D - PullRequest
0 голосов
/ 05 октября 2011

Я строю глобус со странами. У меня все сферы построены и все работает нормально. Проблема в том, чтобы заставить земной шар выглядеть правильно. Мне пришлось сложить все фрагменты ролика в один большой клип, а затем сломать их оттуда. Проблема в том, что я не могу заставить Away3D распознавать вторичные мувиклипы. Если я применяю слушателя ко всей сфере, он работает нормально (но это не работает). Есть ли способ использовать вложенные мувиклипы в away3d?

//what works
var materialMovie:MovieClip = new causticsMovie() as MovieClip;
var causticsMaterial:MovieMaterial = new MovieMaterial( materialMovie);
var sphere:Sphere = new Sphere({material:causticsMaterial, radius:300,segmentsH:18,segmentsW:26, interactive:true});
causticsMaterial.interactive = true;
view.scene.addChild(sphere);

sphere.addEventListener(MouseEvent3D.MOUSE_DOWN, NA);

//what doesn't

world_map.northAfrica_mc.addEventListener(MouseEvent3D.MOUSE_DOWN, NA);

Есть ли решение этой проблемы?

1 Ответ

1 голос
/ 05 октября 2011

Если я пойму, как обычно работают 3d движки во флеше, это будет невозможно. Они создают текстуру из оригинального мувиклипа (ов), которую затем трансформируют. Таким образом, не осталось клипов для клика.

Есть несколько способов обойти это, я думаю. Вы могли бы преобразовать местоположение щелчка в полярные координаты (я не уверен насчет математики там, но Google должен быть полезным), и выяснить, какое местоположение было нажато таким образом.

Или, вы можете (вероятно) иметь вторую невидимую сферу (вне сцены или не добавленную в качестве ребенка, не уверенную, какая будет работать), где вы создаете разную текстуру, в которой каждая страна имеет свой цвет. Вы бы повернули это на те же углы, что и видимая сфера. Затем, при щелчке, отобразите его в BitmapData и проверьте значение в пикселях для точки, по которой вы щелкнули (перевод, чтобы точка на видимой сфере и невидимой сфере совпадали). Я думаю, что этот способ легче двух и даст лучшие результаты.

...