Objekte zur Laufzeit verändern

Status
Nicht offen für weitere Antworten.

BlueDolphin

Mitglied
Hallo zusammen,

ich möchte nach einer bestimmten Zeit die Farbe eines meiner Objekte ändern lassen und habe mir dafür einen ColorSwitch erstellt.

Soweit so gut und funktioniert auch, doch wie bekomme ich es hin, dass ich während der Laufzeit per

Code:
colourSwitch_red.setWhichChild0);

bzw:

Code:
colourSwitch_red.setWhichChild(1);

die Farbe wechseln kann???

Intuitiv habe ich gedacht, ich setze die neue Farbe nach einer best. Zeit und lasse die Scene dann einfach per:

Code:
theScene.compile();

neu kompilieren kann, doch so funktioniert es leider nicht. :roll:

Wie kann ich den Switch zur Laufzeit steuern? Steh da grade auf dem Schlauch :oops:

Vielen Dank im Voraus...
 

Florianer

Mitglied
Hi,

den Lösungsweg mal nur kurz angerissen: Du musst für die Objekte, die du später ändern können willst, die entsprechenden Capabilities setzten (lesender + schreibender Zugriff), denn standardmäßig darfst du nichts mehr an deiner Szene, deinen Objekten ändern, wenn die Szene live ist. Deswegen geht auch dein compile nicht. Nachdem also die Rechte gesetzt sind, geh in deiner Methode hin, erzeug deine Materialeigenschaft/-farbe und weiß die dann deinem entsprechendem Objekt zu. Damit solltest du die Farbe ändern dürfen/können.
 

BlueDolphin

Mitglied
Hi, erstmal danke... die Capability hab ich schon mittels...

Code:
colourSwitch_red.setCapability(Switch.ALLOW_SWITCH_WRITE);

gesetzt, daran liegt es leider nicht...

Ich habe jetzt ein Beispiel, bei dem die Farbe bei einer Kollision ge-switched wird:

Der ColorSwitch wird also weiter oben erstellt und dann unten an ein Behavior-Objekt übergeben:

Code:
//Dieses Objekt kuemmert sich um den Farbwechsel der Kugel
CollisionBehaviour1 scb1 = new CollisionBehaviour1(colourSwitch,bounds);
theScene.addChild(scb1);

theScene.compile();

//Hinzufuegen der Szene
su.addBranchGraph(theScene);

Die Klasse CollisionBehaviour1 bearbeitet es dann wie folgt:

Code:
import java.util.*;
import javax.media.j3d.*;

public class CollisionBehaviour1 extends Behavior
{

   //Es muessen Kollisionsein- und -austritt beruecksichtigt werden.
   public WakeupCriterion[] theCriteria;
   public WakeupOr oredCriteria;
   public Switch collidingShape;


   public CollisionBehaviour1(Switch theShape, Bounds theBounds)
   {
     collidingShape = theShape;
     setSchedulingBounds(theBounds);
   }


  public void initialize()
  {
    theCriteria = new WakeupCriterion[2];
    theCriteria[0] = new WakeupOnCollisionEntry(collidingShape);
    theCriteria[1] = new WakeupOnCollisionExit(collidingShape);
    oredCriteria = new WakeupOr(theCriteria);
    wakeupOn(oredCriteria);
  }



  public void processStimulus(Enumeration criteria)
  {
    //Hier wird definiert, was bei einem Kollisionsereignis passieren soll.
    while (criteria.hasMoreElements())
    {
      WakeupCriterion theCriterion = (WakeupCriterion) criteria.nextElement();
      if (theCriterion instanceof WakeupOnCollisionEntry) //-> Wechsel auf Rot
      {
        collidingShape.setWhichChild(1);
      }
      else
      {
        if (theCriterion instanceof WakeupOnCollisionExit) //-> Wechsel auf Gruen
        {
          collidingShape.setWhichChild(0);
        }
      }
      wakeupOn(oredCriteria);
    }
  }

}

So möchte ich es auch machen, nur eben nicht mit einer Kollisionsabfrage, sondern einfach nur einem Switch nach einer bestimmten Zeit. Die Frage ist, muss ich dann auch mit dem Behavior und der Methode "processStimulus(Enumeration criteria)" arbeiten? Die ist doch eig. nur für Kollisionsabfragen, oder?

Wenn ich die Bahavior-Klasse so umschreibe, dass keine Kollision mehr abgefragt wird, bleibt nicht viel übrig :/


Code:
mport java.util.*;
import javax.media.j3d.*;


public class CollisionBehaviour1 extends Behavior
{


  public Switch collidingShape;



  public CollisionBehaviour1(Switch theShape, Bounds theBounds) {
     
     collidingShape = theShape;
     setSchedulingBounds(theBounds);
  }


   public void initialize() {
   	
       collidingShape.setWhichChild(1);
    
  }


	
  public void pause(int time) {
	
	try { Thread.sleep(time); }
	catch (InterruptedException e) { }
	
  }


    public void processStimulus(Enumeration criteria) {
    
 
   }
}

Ich weiß einfach net, wo ich meine "Pause" einbringen kann, um so nach einer bestimmten Zeit collidingShape.setWhichChild(X) ausführen zu können. Benötige ich überhaupt ein Behavior?

Ich glaub jetzt hab ich alle genug verwirrt... vll hat ja jmd. nen Tipp *hoff*

Danke...
 

BlueDolphin

Mitglied
hat sich erledigt... hab´s nun mit dem Farbinterpolator gelöst... falls dennoch jmd. nen Tipp hat, wie man den Switch mit einer Zeitschaltuhr steuern kann, wär ich interessiert dran :cool:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G zur laufzeit objekte einfügen Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
Kim_Dotcom Objekte synchronisieren Variablen Spiele- und Multimedia-Programmierung 19
K Bewegte Objekte per Mausklick entfernen Spiele- und Multimedia-Programmierung 3
N Helden: Verschiedene Objekte oder konkrete Unterklassen Spiele- und Multimedia-Programmierung 1
gamebreiti Wie Objekte versenden und empfangen Spiele- und Multimedia-Programmierung 4
J Objekte übereinander lagern Spiele- und Multimedia-Programmierung 1
L JavaFX Objekte bewegen Spiele- und Multimedia-Programmierung 3
Q Mehr objekte darstellen als Pixel vorhanden Spiele- und Multimedia-Programmierung 6
lord239123 Minecraft Nur sichtbare Objekte rendern Spiele- und Multimedia-Programmierung 5
Z Objekte animieren mit Threads Spiele- und Multimedia-Programmierung 4
M Objekte verschwinden durch Explosion Spiele- und Multimedia-Programmierung 2
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
A JME3 will Blender/j3o Objekte nicht einladen Spiele- und Multimedia-Programmierung 3
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
T JOGL 2D Objekte drehen rotate Spiele- und Multimedia-Programmierung 4
D Objekte in weiter Entfernung flimmern / flackern Spiele- und Multimedia-Programmierung 2
G 3D-Objekte / Grafiken gesucht Spiele- und Multimedia-Programmierung 6
S Klickbare Objekte im Spiel Spiele- und Multimedia-Programmierung 8
T Java3D: Objekte platzieren und entfernen? Spiele- und Multimedia-Programmierung 7
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
L 3D Objekte in Java importieren Spiele- und Multimedia-Programmierung 2
M Java3D Picking - falsche Objekte werden gepickt Spiele- und Multimedia-Programmierung 3
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
T Selbst-handelnde Objekte im Client-Server Betrieb Spiele- und Multimedia-Programmierung 9
M Java3D Objekte entfernen und hinzufügen Spiele- und Multimedia-Programmierung 10
aze Java 3d Objekte überdecken 2d Komponenten Spiele- und Multimedia-Programmierung 7
aze Java 3D : 3D Objekte speichern und später wieder einlesen Spiele- und Multimedia-Programmierung 9
D Halbdurchsichtige Objekte Spiele- und Multimedia-Programmierung 17
F zu viele Objekte, Problem mit neuzeichnen. Spiele- und Multimedia-Programmierung 5
M Alle Objekte aus der SimpleUniverse entfernen Spiele- und Multimedia-Programmierung 2
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
B Position der ViewingPlatform und Visueller Objekte setzen Spiele- und Multimedia-Programmierung 3
B Isometrischer KartenEditor mit Animierten Objekte Spiele- und Multimedia-Programmierung 3
J 1x Punktlicht auf 5 Objekte benutzen Spiele- und Multimedia-Programmierung 17
F Maussteuerung-gezeichnete Objekte Spiele- und Multimedia-Programmierung 4
A durch Objekte hindurchzoomen Spiele- und Multimedia-Programmierung 2
S 3D Objekte ohne Java3D darstellen? Spiele- und Multimedia-Programmierung 10
J Zu viele Objekte - OutOfMemoryError Spiele- und Multimedia-Programmierung 3
L Objekte zentrieren Spiele- und Multimedia-Programmierung 2
G 2D-Objekte werden nicht vollständig gezeichnet Spiele- und Multimedia-Programmierung 4
conan2 Objekte in richtiger Z-Reihenfolge zeichnen Spiele- und Multimedia-Programmierung 2
A Objekte nacheinander zeitgesteuert rotieren lassen Spiele- und Multimedia-Programmierung 4
H 3D Objekte ausfüllen Spiele- und Multimedia-Programmierung 3
T 3D-Objekte Laden Spiele- und Multimedia-Programmierung 3
D 2D Graphic Objekte in ein JPanel einfügen Spiele- und Multimedia-Programmierung 2
G Zugriff auf einzelne Objekte Spiele- und Multimedia-Programmierung 12
aze BranchGroup zur Laufzeit hinzufügen Spiele- und Multimedia-Programmierung 3
H Transformgroup zur Laufzeit bearbeiten Spiele- und Multimedia-Programmierung 4
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
Sugan GUI verändern mit JavaFX Spiele- und Multimedia-Programmierung 1
M [JAVA 3D] Position des Objektes verändern Spiele- und Multimedia-Programmierung 16
D Polygonsize durch das umliegende Reckteck verändern inJava2D Spiele- und Multimedia-Programmierung 6
K KeyNavigatorBehavior Attribute verändern Spiele- und Multimedia-Programmierung 3
D OrbitBehavior Rotationspunkt verändern? Spiele- und Multimedia-Programmierung 5
A Körper während der livezeit in seiner Form verändern? Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben