TransformGroup finden und bearbeiten

Status
Nicht offen für weitere Antworten.

RobDom

Mitglied
Hallo,

ich habe wahrscheinlich ein ganz einfaches Problem:

Ich will in meiner BranchGroup eine TransformGroup finden und die Transform3D verändern.

Code:
// .....
for (int i = 0; i < branchGroup.numChildren; i++) {
     if (branchGroup.getChild(i).getName == "name") {
          branchGroup.getChild(i).setTransform(transform3D);
          }
     }
// .....

liefert leider einen Fehler, weil .getChild immer den Typ Node zurückliefert und nicht TransformGroup.

Wie kann ich das lösen und auf die gefundene TransformGroup zugreifen??

- Nein ich kann nicht direkt über den Name darauf zugreifen...
- Ja alle Capabilities sind gesetzt...

Gruß und Dank
 

merlin2

Top Contributor
Code:
if (branchGroup.getChild(i).getName == "name" && branchGroup.getChild(i) instanceof TransformGroup) { 
   ((TransformGroup)branchGroup.getChild(i)).setTransform(transform3D); 
}
 

RobDom

Mitglied
Vielen Dank für die schnelle Antwort, so klappt's :)

Weisst Du vielleicht auch, wie man den Graphen durch alle Ebenen durchsucht,
um eine TransformGroup zu finden?? Bei anderen Sprachen gibt es z.B. Methoden
wie .nextTransversal, die in die nächste Ebene springt.
 

Marco13

Top Contributor
Du solltest IMHO den Graphen überhaupt nicht durchsuchen. Wenn du eine TransformGroup nachträglich ändern willst, dann speichere eine Referenz darauf, und benutz' DIE dann..
Code:
class XXX
{
    TransformGroup x;
     void erstelle()
     {
         ....
         x = new TransformGroup(...);
         rootBranchGroup.add(x);
         ...
     }

      void ändere()
      {
           x.setTransform(...)
      }
}
 

RobDom

Mitglied
...das geht leider nicht, weil ich erst über Benutzereingabe erfahre,
welche Trafo geändert werden soll. Der User kann alle Trafos über
TextFeld anwählen und über ScrollBars ändern...
 

Marco13

Top Contributor
Hm. Klingt gewagt. Jedenfalls kannst du dir deine eigene rekursive Suche basteln, sinngemäß etwa sowas wie
Code:
findNode(Node node, String name)
{
    if (node.name == name) return node;
    for (all children c of node) 
    {
        Node n = findNode(c, name);
        if (n!= null) return n;
    }
    return null;
}

// Aufruf:
Node n = findNode(wurzel, "Test");

Was passiert, wenn zwei Knoten den gleichen Namen haben ... naja....
 

RobDom

Mitglied
for (all children c of node)
...genau danach hab ich gesucht, wenn das auch die children der children usw.
berücksichtigt !?!
Ja klingt gewagt, ist es vielleicht auch, aber zumindest treten keine doppelten Namen auf,
weil ich die nach Funktion und Ebene indiziert benenne.
Ich werds mal probieren, was besser geht:
- zur Laufzeit durchsuchen, oder
- Instanzen auf alle TGs

Schon mal Danke
 

Marco13

Top Contributor
RobDom hat gesagt.:
for (all children c of node)
...genau danach hab ich gesucht, wenn das auch die children der children usw.
berücksichtigt !?!
Durch den rekursiven Aufruf, ja.

In einer Mischung aus trace und PSeudocode sieht das dann so aus:
Code:
findNode(ebene_/*1*/_)
{
    for (all children c of node)
    {
        // c ist in ebene_/*2*/_
        Node n = findNode(c, name); // Hier wird findNode mit einem child aufgerufen - d.h. es geht so weiter:


        findNode(ebene_/*2*/_)
        {
             for (all children c of node)
            {
                 // c ist in ebene_/*3*/_
                Node n = findNode(c, name); // Hier wird findNode mit einem child aufgerufen - d.h. es geht so weiter:



                findNode(ebene_/*3*/_) ...
 

RobDom

Mitglied
Danke für die Mühe...

...habs aber dann doch über Instanzen gelöst.
Ist zwar viel was ich dann doppelt mache, aber da der User erst zur Laufzeit
die TGs anlegt und auch steuert und weil es meistens viele Ebenen gibt, war
ein Durchsuchen zur Laufzeit etwas langwierig...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JAVA3D TransformGroup <--> Group Problem Spiele- und Multimedia-Programmierung 3
H 3DS zur TransformGroup Spiele- und Multimedia-Programmierung 2
B Parent vom TransformGroup entfernen Spiele- und Multimedia-Programmierung 8
aze Animation an TransformGroup anpassen Spiele- und Multimedia-Programmierung 5
K TransformGroup werden nicht getrennt behandelt Spiele- und Multimedia-Programmierung 2
Developer_X Transform3D[] und TransformGroup[] Spiele- und Multimedia-Programmierung 13
G Behaviors bei TransformGroup Spiele- und Multimedia-Programmierung 2
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
H Transformgroup zur Laufzeit bearbeiten Spiele- und Multimedia-Programmierung 4
MiMa Fotos Duplikate finden Spiele- und Multimedia-Programmierung 45
S AAC und MP3 in Ringpuffer und Lücke finden Spiele- und Multimedia-Programmierung 0
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
O In Array Pulk von gleichen Zahlen finden. Spiele- und Multimedia-Programmierung 4
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
M Einen Hobby Game - / Grafik Designer zu finden (Screenshot vom Spiel) Spiele- und Multimedia-Programmierung 7
N Mikrofon (des jeweiligen PCs) finden Spiele- und Multimedia-Programmierung 2
P svg bearbeiten Spiele- und Multimedia-Programmierung 0
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
S MP3 Datei informationen bearbeiten Spiele- und Multimedia-Programmierung 9
K Button eigenschaften bearbeiten Spiele- und Multimedia-Programmierung 20
S BMP-Bild Pixel für Pixel bearbeiten Spiele- und Multimedia-Programmierung 1
C jpg.Bilder teilen/bearbeiten für Puzzle Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben