Papervision3d useOwnContainer oraz InteractiveScene3DEvent.OBJECT_CLICK
Właśnie straciłem kilka cennych chwil z mojego życia, szukając rozwiązania dotyczącego klikalnych elementów z Papervision3d. Jak może wiecie, jest taka biblioteka do ActionScript, która nazywa się właśnie Papervision3d i … jak nazwa wskazuje … odpowiada ona za renderowanie scen w trzech wymiarach.
Problem pojawia się w momencie, gdy potrzebujemy klikalny element (np. jakiś obiekt z klas Primitives). Gdy mamy
viewport.interactive = true
oraz materiał również z interactive = true, to możemy użyć event’u o nazwie
InteractiveScene3DEvent.OBJECT_CLICK
Gdy do tego nasz obiekt, który chcemy kliknąć, ma ustawioną właściwość
useOwnContainer = true
to event OBJECT_CLICK przestaje działać – a raczej działa bardzo wybiórczo. Rozwiązaniem okazało się dopisanie jednej linijki kodu do klasy org.papervision3d.view.layer.ViewportLayer.as !
W konstruktorze tej klasy przed init() (linijka numer 55) wystarczy dopisać:
this.mouseChildren = false;
I tyle. Taka prosta rzecz sprawiła, że świat stał się piękniejszy…przynajmniej dla mnie, bo nie muszę dłużej szukać rozwiązania. Postanowiłem opublikować je tutaj, bo nie jest łatwo znaleźć je, mimo tak pomocnego narzędzia jak Google :)