Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-05-2009, 02:50   #1 (permalink)
Neuer User
 
Registriert seit: May 2009
Beiträge: 10
onEnterFrame-Listener zu einer Sphere hinzufügen möglich?

Hallo!

ich bin relativ neu im Umgang mit Flex und Papervision und habe folgende Frage: ist es möglich einer Instanz der Papervision3D-Klasse Sphere einen EventListener für Event.ENTER_FRAME mitzugeben?
ich möchte gern eine Flexanwendung erstellen, die eine Sphere enthält, die wenn man auf sie mit der Maus klickt, anfängt sich zu drehen.
Dazu muss die Sphere in jedem Frame, also onEnterFrame prüfen, ob sie geklickt wurde oder nicht.

ich habe mal testweise eine Sphere erstellt und ihr einen EventListener für Event.ENTER_FRAME mitgegeben. In dem EventHandler, sorge ich dafür dass die Sphere sich um die Y-Achse dreht. (siehe Code)
Wenn ich den Code ausführe, sehe ich die Sphere, aber sie dreht sich nicht. Es kommen allerdings auch keine Fehlermeldungen.
ich glaube, der EventListener wird zwar der Sphere hinzugefügt, der EventHandler wird jedoch nie aufgerufen.

Wird dieser EventListener nicht der Sphere hinzugefügt, sonder direkt der Instanz meiner Main-Klasse, dann dreht sich die Sphere.

Der Code sieht folgendermaßen aus:

private var kugel:Sphere;

kugel = new Sphere(composit);
kugel.addEventListener(Event.ENTER_FRAME,onEnterFr ame);

private function onEnterFrame(e:Event):void{
kugel.rotationY++;
}
scene.addChild(kugel);


Hat jemand von Euch vielleicht eine Ahnung warum der EventHandler nicht onEnterFrame aufgerufen wird? Ist es nicht möglich einer Sphere einen ENTER_FRAME-Listener mitzugeben? Bitte Euch hiermit dringend um Hilfe!

liebe grüsse
flashback1
flashback1 ist offline   Mit Zitat antworten
Alt 24-05-2009, 16:50   #2 (permalink)
Neuer User
 
Registriert seit: May 2002
Ort: Berlin
Beiträge: 13
In Pv3D haben DisplayObject3D-s nicht unbedingt einen eigenen Container (Flash-Sprite). Das darstellende Flash-Sprite, wird vom Viewport3D , bzw Viewport3D -Layern verwaltet.

Wenn du möchtest kannst du aber "Sphere.useOwnContainer = true" setzen.
Sphere.container kann dann Enterframe-Listener adden. Je nachdem wie deine App aufgebaut ist, kommt dadurch aber das zSorting durcheinander.

Der bessere Weg ist es, einen einzigen Listener bei deinem Viewport3D bzw der Stage anzumelden und dann die entsprechende Aktion für die Sphere auszuführen.

Wenn du sehr viele Object3Ds hast, die sich autonom updaten sollen, bau dir ne Wrapperklasse, mit ner Variable "model" vom Typ DisplayObject3D. Deine Wrapperklasse kann dann eine Funktion "onTick/onEnterframe" haben, die bei Aufruf Aktionen (z.B. rotieren) auf ihr Model ausführt. "onTick/onEnterframe" der Wrapper werden dann ganz normal im RenderLoop aufgerufen.

Geändert von lusida (24-05-2009 um 17:07 Uhr)
lusida ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele