Boolean Listener?

Status
Nicht offen für weitere Antworten.
D

Developer_X

Gast
Hi,
ich hab grad was programmiert, und hier geht es sehr stark um Booleans, wenn ein boolean true ist dann soll dies und das, passieren usw...
Die If-Sentences will ich nun in einen void einbauen, doch sie funktionieren nicht was muss man an einen void anhängen damit er so funktioniert,
vielleicht irgendetwas mit throws oder extends das wär mir aber neu.
Also kann mir einer helfen?:
Code:
public void makeAvatar()
{
...
}
 

Templon

Bekanntes Mitglied
Developer_X hat gesagt.:
Die If-Sentences will ich nun in einen void einbauen, doch sie funktionieren nicht was muss man an einen void anhängen damit er so funktioniert
[/code]

In ein void einbauen?! void heisst nur, dass diese Methode nichts zurück gibt. Vllt willst du so etwas? Du übergibst deiner Methode einen boolean und diese macht dann etwas fals dieser true oder false ist?



Code:
	public void makeAvatar(boolean b) {
		if (b == true) {
			// mach irgendwas fals b true ist
		} else {
			// fals b false ist, mach etwas anderes
		}
	}

Edit: Am besten postest du mal den Code den du zum laufen bringen möchtest und beschreibst GENAU was du willst =)
 

ARadauer

Top Contributor
deto.. keinen plan was er vor hat...

du kannst auch auf english fragen, wenn du dir damit leichter tust..
 
D

Developer_X

Gast
HIer ist mal der gepostete Code, der sogenannte Keybehavior der in einer Ritze des Codes hängt, macht bestimmte sachen mit den Booleans:
Code:
import javax.swing.*;
import java.awt.*;
import com.sun.j3d.utils.geometry.Sphere;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;

public class WrapMaze3D extends JPanel
{
  private static final int PWIDTH = 1450;   // size of panel
  private static final int PHEIGHT = 600; 

  private Boolean b1,b2,b3,b4;
  private static final int BOUNDSIZE = 10000;  // larger than world
  private SimpleUniverse su;
  private BranchGroup sceneBG;
  private BoundingSphere bounds;   // for environment nodes

  private MazeManager mazeMan;      // maze manager
  private TransformGroup camera2TG; // back-facing camera

  void createStarBackground(BranchGroup bg)
  {
  java.util.Random rand = new java.util.Random();
  float            mag;
  BranchGroup      BGBranch=new BranchGroup();
  Background       BG=new Background();
  Sphere           BGSphere;
 

  PointArray starfield = new PointArray(15000, PointArray.COORDINATES|PointArray.COLOR_3);
  float[] point = new float[3];
  float[] brightness = new float[3];
  for (int i = 0; i < 15000; i++)
     {
     point[0] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     point[1] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     point[2] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     starfield.setCoordinate(i, point);
     mag=(rand.nextFloat()+0.5f)/1.5f;
     brightness[0]=mag;
     brightness[1]=mag;
     brightness[2]=mag;
     starfield.setColor(i, brightness);
     }
  Shape3D StarShape=new Shape3D(starfield);
  StarShape.setAppearance(new Appearance());
  StarShape.getAppearance().setPointAttributes(new PointAttributes(1f,true));
  BGBranch.addChild(StarShape);
  BG.setGeometry(BGBranch);
  BG.setApplicationBounds(new BoundingSphere(new Point3d(),100.0));

  Appearance SphereApp = new Appearance();
  SphereApp.setTexture((new TextureLoader("F:/Rayman/BonusGame_1/Sky.jpg",null)).getTexture());
  SphereApp.setTextureAttributes(new TextureAttributes(TextureAttributes.MODULATE,new Transform3D(),new Color4f(),TextureAttributes.FASTEST));
 
  BGSphere=new Sphere(1.0f,Sphere.GENERATE_NORMALS_INWARD|Sphere.GENERATE_TEXTURE_COORDS,50,SphereApp);
  BGBranch.addChild(BGSphere);

  bg.addChild(BG);
  }

  public WrapMaze3D(MazeManager mm, BirdsEye be, TransformGroup c2TG)
  // construct the scene and the main camera
  {
    mazeMan = mm;       // ref to maze manager
    camera2TG = c2TG;   // ref to second back-facong camera

    setLayout( new BorderLayout() );
    setOpaque( false );
    setPreferredSize( new Dimension(PWIDTH, PHEIGHT));

    GraphicsConfiguration config =
					SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config);
    add("Center", canvas3D);
    canvas3D.setFocusable(true); 
    canvas3D.requestFocus();
    su = new SimpleUniverse(canvas3D);

    createSceneGraph();
    prepareViewPoint(be);

    su.addBranchGraph( sceneBG );
  } // end of WrapMaze3D()


  void createSceneGraph()
  // initilise the scene 
  { 
    sceneBG = new BranchGroup();
    bounds = new BoundingSphere(new Point3d(0,0,0), BOUNDSIZE); 

    lightScene();     // add the lights  
    TexturedFloor floor = new TexturedFloor();
    sceneBG.addChild( floor.getBG() );
    
    sceneBG.addChild( mazeMan.getMaze() );  // add maze, using MazeManager
    sceneBG.addChild( camera2TG );          // add second camera
    createStarBackground(sceneBG);
    sceneBG.compile();   // fix the scene
  } // end of createSceneGraph()



  private void lightScene()
  // *No* ambient light, 2 directional lights
  {
    Color3f white = new Color3f(0.3f, 0.3f, 0.3f);

    // Set up the ambient light
    AmbientLight ambientLightNode = new AmbientLight(white);
    ambientLightNode.setInfluencingBounds(bounds);
    // sceneBG.addChild(ambientLightNode);   // ambient commented out

    // Set up the directional lights
    Vector3f light1Direction  = new Vector3f(-1.0f, -1.0f, -1.0f);
       // left, down, backwards 
    Vector3f light2Direction  = new Vector3f(1.0f, -1.0f, 1.0f);
       // right, down, forwards

    DirectionalLight light1 = 
            new DirectionalLight(white, light1Direction);
    light1.setInfluencingBounds(bounds);
    sceneBG.addChild(light1);

    DirectionalLight light2 = 
        new DirectionalLight(white, light2Direction);
    light2.setInfluencingBounds(bounds);
    sceneBG.addChild(light2);
  }  // end of lightScene()

  private void prepareViewPoint(BirdsEye be)
  {
    // adjust viewpoint parameters
    View userView = su.getViewer().getView();
    userView.setFieldOfView( Math.toRadians(90.0));  // wider FOV
    // 10 and 0.1; keep ratio between 100-1000
    userView.setBackClipDistance(60);      // can see a long way
    userView.setFrontClipDistance(0.05);   // can see close things

    ViewingPlatform vp = su.getViewingPlatform();

    // add a spotlight and avatar to viewpoint
    PlatformGeometry pg = new PlatformGeometry();
    pg.addChild( makeSpot() );
     pg.addChild(makeAvatar());    // avatar not used here
    vp.setPlatformGeometry( pg );

    // fix starting position and orientation of viewpoint
    TransformGroup steerTG = vp.getViewPlatformTransform();
    initViewPosition(steerTG);

    // set up keyboard controls
    KeyBehavior keybeh = new KeyBehavior(mazeMan, be, camera2TG,b1,b2,b3,b4);
    keybeh.setSchedulingBounds(bounds);
    vp.setViewPlatformBehavior(keybeh);
   
  } // end of prepareViewPoint()


  private void initViewPosition(TransformGroup steerTG)
  // rotate and move the viewpoint
  {
    Transform3D t3d = new Transform3D();
    steerTG.getTransform(t3d);
    Transform3D toRot = new Transform3D();
    toRot.rotY(-Math.PI);   
    // rotate 180 degrees around Y-axis, so facing along positive z-axis

    t3d.mul(toRot);
	t3d.setTranslation( mazeMan.getMazeStartPosn() );  // place at maze start
    steerTG.setTransform(t3d); 
  }  // end of initViewPosition()


  private SpotLight makeSpot()
  // a spotlight to help the user see in the (relative) darkness
  {
    SpotLight spot = new SpotLight();
    spot.setPosition(0.0f, 0.5f, 0.0f);      // a bit above the user
    spot.setAttenuation(0.0f, 1.2f, 0.0f);   // linear attentuation
    spot.setSpreadAngle( (float)Math.toRadians(30.0));  // smaller angle
    spot.setConcentration(5.0f);            // reduce strength quicker
    spot.setInfluencingBounds(bounds);
    return spot;
  }  // end of makeSpot()


  private TransformGroup makeAvatar()
  {
   TransformGroup U = new TransformGroup();
Apperance SphereApp = new Appearance();
Appearance SphereApp = new Appearance();
SphereApp.setTexture((new TextureLoader("F:/Rayman/BonusGame_1/Sky.jpg",null)).getTexture());
SphereApp.setTextureAttributes(new TextureAttributes(TextureAttributes.MODULATE,new Transform3D(),new Color4f(),TextureAttributes.FASTEST));
 
if(bb1=true)
{U.addChild(new Sphere(1.0f,Sphere.GENERATE_NORMALS_INWARD,80,SphereApp);}
    
    return U;
  }  
}
Ihr seht ja was ich versuche, was mache ich denn falsch?
 
K

Kalli

Gast
In dem ganzen Code taucht jeder Boolean genau zweimal auf. Einmal an der Stelle, an der er deklariert wird, und einmal an der Stelle, an der sie in eine Methode übergeben werden.

Ich sehe immer noch nicht, wie du nun falsch und richtig definierst, was du erwartest, was passiert und wie und wo du etwas ändern möchtest.
 
D

Developer_X

Gast
Kalli schau mal bei makeAvatar()
da steht
if(bb1=true)
{
...
}
 
S

SlaterB

Gast
if(bb1=true)
ist immer true, außerdem wird bb1 der Wert true zugewiesen,

meinst du
if(bb1==true)
?

noch besser:
if(bb1)
 
D

Developer_X

Gast
Wie am ganz hohen anfang gesagt, bb1 ist nur so lange false, bis Keybehavior sagt, dass es true ist,
soll ich die KeyBehavior Klasse auch noch senden ?
Bitte erstmal lesen bevor man antwortet
 
S

SlaterB

Gast
ich spreche von der Syntax, nicht vom Inhalt,
und egal was das Programm macht/ machen soll, ist diese Konstruktion unsinnig,

aber bei dem Ton sind weitere Antworten von mir wohl nicht erwünscht
 
D

Developer_X

Gast
Hi, hier hab ich auch den Key Behavior, damit ihr sehen könnt, wie er die Boolean verändert, vielleicht könnt ihr mir dann helfen:
Code:
import java.awt.AWTEvent;
import java.awt.event.*;
import java.util.Enumeration;

import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.vp.*;


public class KeyBehavior extends ViewPlatformBehavior
{
  // move and rotation constants for comms. with BirdsEye object
  private static final int FORWARD = 0;
  private static final int LEFT = 1;
  private static final int BACK = 2;
  private static final int RIGHT = 3;
  
  private Boolean bb1,bb2,bb3,bb4;

  private final static double MOVE_AMT = 0.2;
  private final static double ROT_AMT = Math.PI / 40.0;  // 90 degrees

  /* Hardwired movement vectors.
     These moves are for the viewpoint where forward means moving
     into the scene, making the z-axis value smaller. Left, right,
     back, up, and down are all relative to that orientation.
  */
  private static final Vector3d VFWD = new Vector3d(0,0,-MOVE_AMT);
  private static final Vector3d VBACK = new Vector3d(0,0,MOVE_AMT);
  private static final Vector3d VLEFT = new Vector3d(-MOVE_AMT,0,0);
  private static final Vector3d VRIGHT = new Vector3d(MOVE_AMT,0,0);
  private static final Vector3d VDOWN = new Vector3d(0, -MOVE_AMT ,0);
  private static final Vector3d VUP = new Vector3d(0, MOVE_AMT ,0);

  // key names
  private int forwardKey = KeyEvent.VK_UP;
  private int backKey = KeyEvent.VK_DOWN;
  private int leftKey = KeyEvent.VK_LEFT;
  private int rightKey = KeyEvent.VK_RIGHT;

  private WakeupCondition keyPress;

  private MazeManager mm;    // for checking moves
  private BirdsEye be;       // player moves/turns are sent to be
  private int zOffset;       // to stop movement down below the floor
  private TransformGroup camera2TG;   // for affecting the back-facing camera

  // for repeated calcs
  private Transform3D t3d = new Transform3D();
  private Transform3D toMove = new Transform3D();
  private Transform3D toRot = new Transform3D();
  private Vector3d trans = new Vector3d();



  public KeyBehavior(MazeManager mazeMan, BirdsEye bird, TransformGroup c2,Boolean b1, Boolean b2, Boolean b3, Boolean b4)
  {
    
	keyPress = new WakeupOnAWTEvent( KeyEvent.KEY_PRESSED );
    
    bb1 = b1;
    bb2 = b2;
    bb3 = b3;
    bb4 = b4;
    
	mm = mazeMan;
    be = bird;
    camera2TG = c2;
    zOffset = 0;
  } 


  public void initialize()
  { wakeupOn( keyPress ); }


  public void processStimulus( Enumeration criteria )
  {
    WakeupCriterion wakeup;
    AWTEvent[] event;

    while( criteria.hasMoreElements() ) {
      wakeup = (WakeupCriterion) criteria.nextElement();
      if( wakeup instanceof WakeupOnAWTEvent ) {
        event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();
        for( int i = 0; i < event.length; i++ ) {
          if( event[i].getID() == KeyEvent.KEY_PRESSED )
            processKeyEvent((KeyEvent)event[i]);
        }
      }
    }
    wakeupOn( keyPress );
  } // end of processStimulus()



  private void processKeyEvent(KeyEvent eventKey)
  {
    int keyCode = eventKey.getKeyCode();
    // System.out.println(keyCode);
    if( eventKey.isAltDown() )   // key + <alt>
      altMove(keyCode);
    else
      standardMove(keyCode);
  } // end of processKeyEvent()


  private void standardMove(int keycode)
  /* A move for the main camera (e.g. VFWD for forward) is paired
     with an opposite move for the back-facing camera (e.g. VBACK).

     This approach means that the relative orientation of the two
     cameras are hardwired into this class.

     A rotation is the same for both cameras. So a rotation left causes
     a rotaion of ROT_AMT for both cameras.
  */
  {
    if(keycode == forwardKey)
    {
      moveBy(VFWD, FORWARD, VBACK);  // args: main camera, bird's eye, back camera
      bb1=true;
      bb2=false;
      bb3=false;
      bb4=false;
    }
    else if(keycode == backKey)
    {
      moveBy(VBACK, BACK, VFWD);
      bb1=false;
      bb2=false;
      bb3=false;
      bb4=true;
    }
      else if(keycode == leftKey)
      {
      doRotateY(ROT_AMT, LEFT);
      bb1=false;
      bb2=false;
      bb3=true;
      bb4=false;
      }
      else if(keycode == rightKey)
      {
    	  doRotateY(-ROT_AMT, RIGHT);
          bb1=false;
          bb2=true;
          bb3=false;
          bb4=false;
      }
  } // end of standardMove()


  private void altMove(int keycode)
  {
    if(keycode == backKey) {  // move down
      if (zOffset > 0) {
        doMove(VDOWN);  // no testing using moveBy()
        doMoveC2(VDOWN);
        zOffset--;
      }
    }
    else if(keycode == forwardKey) {  // move up
      doMove(VUP);   // no testing using moveBy()
      doMoveC2(VUP);
      zOffset++;
    }
    else if(keycode == leftKey)
      moveBy(VLEFT, LEFT, VRIGHT);   // left for main camera, right for back camera
    else if(keycode == rightKey)
      moveBy(VRIGHT, RIGHT, VLEFT);
  } // end of altMove()


  
  // ------------------ moves -----------------------------

  private void moveBy(Vector3d theMove, int dir, Vector3d theMoveC2)
  /* Calculate the next move and test if there is an obstacle there.
     If there isn't then carry out the move, otherwise issue a
     warning. */
  {
    Point3d nextLoc = possibleMove(theMove);
    if (mm.canMoveTo(nextLoc.x, nextLoc.z)) {    // no obstacle there?
      targetTG.setTransform(t3d);   
         // efficient: t3d is a global set in possibleMove()
      // doMove(theMove, theMoveC2);   // inefficient recalc
      doMoveC2(theMoveC2);
      be.setMove(dir);
    }
    else  // there is an obstacle
      be.bangAlert();  // tell BirdsEye object, so a warning can be shown    
  }  // end of moveBy()



  private Point3d possibleMove(Vector3d theMove)
  /* Calculate the effect of the given translation but
     do not update the object's position until it's been
     tested. */
  { 
    targetTG.getTransform(t3d);   // targetTG is the ViewPlatform's tranform
    toMove.setTranslation(theMove);
    t3d.mul(toMove);
    t3d.get(trans);
    return new Point3d( trans.x, trans.y, trans.z);
  }  // end of possibleMove()


  private void doMove(Vector3d theMove)
  // move the main, forward-facing camera
  {
    targetTG.getTransform(t3d);
    toMove.setTranslation(theMove);
    t3d.mul(toMove);
    targetTG.setTransform(t3d);
  } // end of doMove()


  private void doMoveC2(Vector3d theMoveC2)
  // move the back-facing second camera
  {
    camera2TG.getTransform(t3d);
    toMove.setTranslation(theMoveC2);
    t3d.mul(toMove);
    camera2TG.setTransform(t3d);
  } // end of doMoveC2()


  // ---------------- rotations -----------------------

  private void doRotateY(double radians, int dir)
  // rotate three things
  {
    targetTG.getTransform(t3d);   // rotate main camera
    toRot.rotY(radians);
    t3d.mul(toRot);
    targetTG.setTransform(t3d);

    camera2TG.getTransform(t3d);  // rotate back-facing camera
    t3d.mul(toRot);  // reuse toRot value
    camera2TG.setTransform(t3d);

    be.setRotation(dir);  // rotate bird's eye view
  } // end of doRotateY()


}  // end of KeyBehavior class
 

MarcB

Bekanntes Mitglied
Was SlaterB dir sagen will ist folgendes: In Zeile 199 machst du im if eine Zuweisung, so dass das ganze immer true ist.
 
D

Developer_X

Gast
So ich muss sagen, ich habe nirgendwo erwähnt was die booleans sind
das habe ich jetzt auch gemacht
 
D

Developer_X

Gast
Code:
public class WrapMaze3D extends JPanel
{
  private static final int PWIDTH = 1450;   // size of panel
  private static final int PHEIGHT = 600; 

  private Boolean b1=false;
  private Boolean b2=false;
  private Boolean b3=false;
  private Boolean b4=false;
  
  private static final int BOUNDSIZE = 10000;  // larger than world
  private SimpleUniverse su;
  private BranchGroup sceneBG;
  private BoundingSphere bounds;   // for environment nodes

  private MazeManager mazeMan;      // maze manager
  private TransformGroup camera2TG; // back-facing camera

  void createStarBackground(BranchGroup bg)
  {
  java.util.Random rand = new java.util.Random();
  float            mag;
  BranchGroup      BGBranch=new BranchGroup();
  Background       BG=new Background();
  Sphere           BGSphere;
 

  PointArray starfield = new PointArray(15000, PointArray.COORDINATES|PointArray.COLOR_3);
  float[] point = new float[3];
  float[] brightness = new float[3];
  for (int i = 0; i < 15000; i++)
     {
     point[0] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     point[1] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     point[2] = (rand.nextInt(2) == 0) ? rand.nextFloat() * -1.0f :rand.nextFloat();
     starfield.setCoordinate(i, point);
     mag=(rand.nextFloat()+0.5f)/1.5f;
     brightness[0]=mag;
     brightness[1]=mag;
     brightness[2]=mag;
     starfield.setColor(i, brightness);
     }
  Shape3D StarShape=new Shape3D(starfield);
  StarShape.setAppearance(new Appearance());
  StarShape.getAppearance().setPointAttributes(new PointAttributes(1f,true));
  BGBranch.addChild(StarShape);
  BG.setGeometry(BGBranch);
  BG.setApplicationBounds(new BoundingSphere(new Point3d(),100.0));

  Appearance SphereApp = new Appearance();
  SphereApp.setTexture((new TextureLoader("F:/Rayman/BonusGame_1/Sky.jpg",null)).getTexture());
  SphereApp.setTextureAttributes(new TextureAttributes(TextureAttributes.MODULATE,new Transform3D(),new Color4f(),TextureAttributes.FASTEST));
 
  BGSphere=new Sphere(1.0f,Sphere.GENERATE_NORMALS_INWARD|Sphere.GENERATE_TEXTURE_COORDS,50,SphereApp);
  BGBranch.addChild(BGSphere);

  bg.addChild(BG);
  }

  public WrapMaze3D(MazeManager mm, BirdsEye be, TransformGroup c2TG)
  // construct the scene and the main camera
  {
    mazeMan = mm;       // ref to maze manager
    camera2TG = c2TG;   // ref to second back-facong camera

    setLayout( new BorderLayout() );
    setOpaque( false );
    setPreferredSize( new Dimension(PWIDTH, PHEIGHT));

    GraphicsConfiguration config =
					SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config);
    add("Center", canvas3D);
    canvas3D.setFocusable(true); 
    canvas3D.requestFocus();
    su = new SimpleUniverse(canvas3D);

    createSceneGraph();
    prepareViewPoint(be);

    su.addBranchGraph( sceneBG );
  } // end of WrapMaze3D()


  void createSceneGraph()
  // initilise the scene 
  { 
    sceneBG = new BranchGroup();
    bounds = new BoundingSphere(new Point3d(0,0,0), BOUNDSIZE); 

    lightScene();     // add the lights  
    TexturedFloor floor = new TexturedFloor();
    sceneBG.addChild( floor.getBG() );
    
    sceneBG.addChild( mazeMan.getMaze() );  // add maze, using MazeManager
    sceneBG.addChild( camera2TG );          // add second camera
    createStarBackground(sceneBG);
    sceneBG.compile();   // fix the scene
  } // end of createSceneGraph()



  private void lightScene()
  // *No* ambient light, 2 directional lights
  {
    Color3f white = new Color3f(0.3f, 0.3f, 0.3f);

    // Set up the ambient light
    AmbientLight ambientLightNode = new AmbientLight(white);
    ambientLightNode.setInfluencingBounds(bounds);
    // sceneBG.addChild(ambientLightNode);   // ambient commented out

    // Set up the directional lights
    Vector3f light1Direction  = new Vector3f(-1.0f, -1.0f, -1.0f);
       // left, down, backwards 
    Vector3f light2Direction  = new Vector3f(1.0f, -1.0f, 1.0f);
       // right, down, forwards

    DirectionalLight light1 = 
            new DirectionalLight(white, light1Direction);
    light1.setInfluencingBounds(bounds);
    sceneBG.addChild(light1);

    DirectionalLight light2 = 
        new DirectionalLight(white, light2Direction);
    light2.setInfluencingBounds(bounds);
    sceneBG.addChild(light2);
  }  // end of lightScene()

  private void prepareViewPoint(BirdsEye be)
  {
    // adjust viewpoint parameters
    View userView = su.getViewer().getView();
    userView.setFieldOfView( Math.toRadians(90.0));  // wider FOV
    // 10 and 0.1; keep ratio between 100-1000
    userView.setBackClipDistance(60);      // can see a long way
    userView.setFrontClipDistance(0.05);   // can see close things

    ViewingPlatform vp = su.getViewingPlatform();

    // add a spotlight and avatar to viewpoint
    PlatformGeometry pg = new PlatformGeometry();
    pg.addChild( makeSpot() );
     pg.addChild(makeAvatar());    // avatar not used here
    vp.setPlatformGeometry( pg );

    // fix starting position and orientation of viewpoint
    TransformGroup steerTG = vp.getViewPlatformTransform();
    initViewPosition(steerTG);

    // set up keyboard controls
    KeyBehavior keybeh = new KeyBehavior(mazeMan, be, camera2TG,b1,b2,b3,b4);
    keybeh.setSchedulingBounds(bounds);
    vp.setViewPlatformBehavior(keybeh);
   
  } // end of prepareViewPoint()


  private void initViewPosition(TransformGroup steerTG)
  // rotate and move the viewpoint
  {
    Transform3D t3d = new Transform3D();
    steerTG.getTransform(t3d);
    Transform3D toRot = new Transform3D();
    toRot.rotY(-Math.PI);   
    // rotate 180 degrees around Y-axis, so facing along positive z-axis

    t3d.mul(toRot);
	t3d.setTranslation( mazeMan.getMazeStartPosn() );  // place at maze start
    steerTG.setTransform(t3d); 
  }  // end of initViewPosition()


  private SpotLight makeSpot()
  // a spotlight to help the user see in the (relative) darkness
  {
    SpotLight spot = new SpotLight();
    spot.setPosition(0.0f, 0.5f, 0.0f);      // a bit above the user
    spot.setAttenuation(0.0f, 1.2f, 0.0f);   // linear attentuation
    spot.setSpreadAngle( (float)Math.toRadians(30.0));  // smaller angle
    spot.setConcentration(5.0f);            // reduce strength quicker
    spot.setInfluencingBounds(bounds);
    return spot;
  }  // end of makeSpot()


  private TransformGroup makeAvatar() 
  { 
   TransformGroup U = new TransformGroup(); 
Appearance SphereApp = new Appearance(); 
SphereApp.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_LINE,PolygonAttributes.CULL_NONE,0));


if(b1==true) 
{U.addChild(new Sphere(1.0f,Sphere.GENERATE_NORMALS_INWARD,80,SphereApp));} 
if(b1==false)
{
	U.removeAllChildren();
}
    
    return U; 
  } 
}
 

ARadauer

Top Contributor
ja slater hat dir geholfen.... erst lesen dann antworten...
SlaterB hat gesagt.:
if(bb1=true)
ist immer true, außerdem wird bb1 der Wert true zugewiesen,

meinst du
if(bb1==true)
?

noch besser:
if(bb1)

if(bb1=true) kompletter müll
if(bb1==true) müll aber funktioniert
if(bb1) so macht mans
 
D

Developer-X

Gast
Doch nun mal wieder zurück zur Frage, wieso, wird b1 nicht true gesetzt wenn ich auf den forward key drückt?


Könnt ihrs mir bitte erklären, ihr habt jetzt ja oben den Keybehavior und die aktuelle WrapMaze3D Klasse,
das hat mir schon geholfen, dass
if(b1=true) was anderes ist als if(b1==true) danke, aber ich habs immer noch nicht geschafft,
nur noch das kleine, kann mir einer helfen?
 

Verjigorm

Top Contributor
Was zeigen denn einfache println() nach
bb1=true;
bb2=false;
bb3=false;
bb4=false;

wenn du nen Key drückst?
vermutlich kommts nichtmal bis dahin ...
 
D

Developer_X

Gast
Ne, ich mach was falsch, und zwar die Art und Weise wie ich die booleans setzte, die art ist falsch
 
T

tuxedo

Gast
? Du hast in "WrapMaze3D" eine "b1" Variable. Verändern tust du sie in der "KeyBehavior" Klasse.

Abfragen tust du die Variable aber wieder in der "WrapMaze3D" Klasse.

Wie soll sich denn der Wert von WrapMaze3D#b1 ändern, wenn du ihn nur in KeyBehavior#b1 änderst? Nur weil die Variablen gleich heissen haben sie noch labge keine Beziehung zueinander.

Oder hab ich jetzt was übersehen?

Nebenbei: *ARadauer & slater zustimm*

Gruß
Alex
 
D

Developer_X

Gast
Ich hab geschrieben Keybehavior(Boolean b1, Boolean b2..)
und in der Klasse Keybehavior
b1 = bb1 gesetzt
bb1 wiederum ist auch ein Boolean, der von den Tasten zu true und false gesetzt wird
in Wrapmaze3D
wurde nun gesagt, das b1
der Boolean b1 ist. Kannst du in den Private Definierungen in dieser Klasse nachlesen
 

tfa

Top Contributor
popc1.gif
 

ARadauer

Top Contributor
tfa hat gesagt.:

das triffts so ziemlich!!


ok ich les mir jetzt nicht deine 5 seiten code durch.. keine lust es ist freitag....

kann es sein, das du aus klasse A eine Klasse B instanzierst einen boolen wertmitgibst den dann aller
b = false; umschreibst und dieser in Klasse A geändert sien soll?

nein das funktioniert so nicht ;-)

Code:
public class Test {
   public static void main(String[] args) {
     boolean b = true;
     changeBoolean(b);
     System.out.println(b);
   }

  static void changeBoolean(boolean b){
   b = !b;  
  }
 

ARadauer

Top Contributor
du überschreibst die variable, die zeigt dan ganz wo anders hin und hat nix mehr mit dem ursprünglichen zu tun.
einen Boolean wert selber kann man nicht ändern, ist wie mit strings...

sowas würde gehen

Code:
public class Test {
   public static void main(String[] args) {
     boolean b = true;
     Container c = new Container(b);
     changeBoolean(c);
     System.out.println(c.isValue());
   }

  static void changeBoolean(Container b){
   b.setValue(!b.isValue());
  }
 }


class Container{
   
   boolean value;

   public boolean isValue() {
      return value;
   }

   public void setValue(boolean value) {
      this.value = value;
   }

   public Container(boolean value) {
      super();
      this.value = value;
   }
   
}
 
D

Developer_X

Gast
Ok, danke, ich wollte nämlich, damit sich keiner die ganzen COde seiten nochmal durchlesen muss,
mit Pfeiltasten die Kamera steuern und dabei gleichzeitig,
das was vor der kamera ist ändern, und da hatte ich gedacht, ich machs einfach so, dass wenn ich die Taste drücke der und der boolean true gesetzt wird,
von der anderen klasse wird dies aufgenommen, und es wird gesagt, wenn der und der boolean true ist, wird das und das vor der kamera gezeigt
 

Leroy42

Top Contributor
Developer-X hat gesagt.:
if(b1=true) was anderes ist als if(b1==true) danke, ...

:shock:

Na bravo, wenn du jetzt erst eines der grundlegensten Basics in der Programmierung verstanden hast.

Developer-X hat gesagt.:
aber ich habs immer noch nicht geschafft,
nur noch das kleine, kann mir einer helfen?

Ich glaube kaum, das es Sinn macht in derart komplexen Programmicode
herumzuwursteln.

Arbeite erst mal ein Grundlagen-Tutorial durch!
 

babba

Mitglied
Leroy42 hat gesagt.:
Developer-X hat gesagt.:
if(b1=true) was anderes ist als if(b1==true) danke, ...

:shock:

Na bravo, wenn du jetzt erst eines der grundlegensten Basics in der Programmierung verstanden hast.

Das weiß sogar ich, und ich hab am Donnerstag erst angefangen :-D

Hab übrigens heut damit begonnen, das Buch zu lesen, und es hat mir schon bei for() geholfen und gezeigt, wie man andere Methoden in die MainMethod einbindet (kp, ob das jetzt richtig ausgedrückt war...). Allerdings hat mir mein Bruder schon ein bisshcne geholfen.

Also, lies das Buch mal durch, wirklich. Denn wenn du nicht mal weißt, dass = zuordnet und == vergleicht, dann glaub ich dir nicht, dass du den Code wirklich geschrieben hast.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
C Boolean Array Allgemeine Java-Themen 4
J Boolean EventListener Allgemeine Java-Themen 2
E Boolean aus Klasse A als String in Klasse B ausgeben Allgemeine Java-Themen 4
A Boolean Array in Allgemeine Java-Themen 3
A boolean und prozesse Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
B boolean return typ verwenden? Allgemeine Java-Themen 5
D falsche Annahme nach korrekter Auswertung (if, boolean) Allgemeine Java-Themen 2
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
I Probleme mit Boolean-Methode Allgemeine Java-Themen 4
R boolean im Bean abfragen Allgemeine Java-Themen 18
D public boolean return Allgemeine Java-Themen 8
E boolean Array in ein byteArray mit derLänge 5 Allgemeine Java-Themen 6
S Problem mit Boolean Variablen Allgemeine Java-Themen 8
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
J Vector - Boolean Allgemeine Java-Themen 24
H boolean wert ändern Allgemeine Java-Themen 2
L boolean aus der main übergeben? Allgemeine Java-Themen 12
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
H Listener Verständnisproblem Allgemeine Java-Themen 5
D Action Listener Problem Allgemeine Java-Themen 3
S Key Listener mit Strg + s Allgemeine Java-Themen 12
K Threads Listener für Future finish Allgemeine Java-Themen 2
TheWhiteShadow Listener Reihenfolge Allgemeine Java-Themen 4
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
A Listener für constructor einer bestimmen Klasse Allgemeine Java-Themen 9
E Bild mit Listener einfügen Allgemeine Java-Themen 3
P Listener für Tastatureingaben ohne Focus Allgemeine Java-Themen 4
serjoscha WatchDog Thread und Listener Allgemeine Java-Themen 10
hdi Listener für Desktop-Veränderungen Allgemeine Java-Themen 7
T JTextField in Listener leeren Allgemeine Java-Themen 2
lenniii Listener & JList Allgemeine Java-Themen 3
K Key listener ohne Fokus aktiv behalten ? Allgemeine Java-Themen 12
G Code-Convention für Listener Allgemeine Java-Themen 2
T Observer vs Listener Allgemeine Java-Themen 18
S Listener Allgemeine Java-Themen 3
P Abstrakte Elternklasse als Listener Allgemeine Java-Themen 6
MQue KeyAction listener Allgemeine Java-Themen 2
M generische Listener Allgemeine Java-Themen 2
S Listener für Kalender Allgemeine Java-Themen 2
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
G Objekt einer inneren Klasse als Listener Allgemeine Java-Themen 3
M Listener und Performance Allgemeine Java-Themen 9
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
Escorter Eigenen Listener schreiben Allgemeine Java-Themen 3
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
T SelectionProvider und Listener Frage Allgemeine Java-Themen 14
I Listener, der zeitlich-periodisch aufgerufen wird Allgemeine Java-Themen 3
R Generische Listener und Sender Allgemeine Java-Themen 12
B Listener dynamisch setzen Allgemeine Java-Themen 6
A Listener Tastatur Allgemeine Java-Themen 3
E Wie: Eigener Listener, eigenes Event (möglichst einfach) Allgemeine Java-Themen 29
D Thread vs Listener Allgemeine Java-Themen 6
K Listener einem Objekt hinzufügen Allgemeine Java-Themen 3
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I Listener/Event selber machen. Allgemeine Java-Themen 4
M Time Listener ? Allgemeine Java-Themen 2
Z Zwei Listener zwischen zwei Klassen Allgemeine Java-Themen 4
B statusbar update -> mit thread oder listener? Allgemeine Java-Themen 7
M Action-listener Allgemeine Java-Themen 6
M Bean Listener hinzufügen und Methode später überschreiben Allgemeine Java-Themen 27
G Flavor-Listener Allgemeine Java-Themen 6
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
A HILFE: subclass von Hashtable mit listener aufstellen Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben