Bom dia
Precisava muito da vossa ajuda. O meu problema consiste no seguinte: tenho dois objectos, um circulo e um quadrado, estes objectos têm que fazer um L, o circulo começa a andar e qd chega á esquina tem que desaparecer e ai aparecer o quadrado a fazer o resto do percurso. O que me está acontecer é que aparecem os dois objectos ao mesmo tempo. Será que me sabem dizer como fazer para aparecer um de cada vez, em tempos diferentes?Em baixo encontra-se o meu trabalho. Agradecia imenso a vossa ajuda.
Desde já muito obrigada
import java.util.Vector;
import javax.vecmath.<em>;
import java.awt.</em>;
import java.awt.event.<em>;
import java.net.URL;
import javax.media.j3d.</em>;
import com.sun.j3d.utils.universe.<em>;
import com.sun.j3d.utils.geometry.</em>;
import com.sun.j3d.utils.image.<em>;
import com.sun.j3d.utils.behaviors.mouse.</em>;
import com.sun.j3d.utils.behaviors.vp.<em>;
import java.applet.</em>;
import com.sun.j3d.utils.applet.MainFrame;
public class RoboBombeiro extends Applet {
public static void main(String[] args) {
new MainFrame(new RoboBombeiro(), 900, 650);
}
public void init() {
// ******************** CRIAÇÃO DO CANVAS *********************
GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
Canvas3D cv = new Canvas3D(gc);
setLayout(new BorderLayout());
add(cv, BorderLayout.CENTER);
// ******************** CRIAÇÃO DO GRAFO DE CENA *********************
BranchGroup bg = createSceneGraph();
bg.compile();
// ******************** CRIAÇÃO DO SIMPLEUNIVERSE *********************
SimpleUniverse su = new SimpleUniverse(cv);
su.getViewingPlatform().setNominalViewingTransform();
// ******************** CRIAÇÃO DO ORBITBEHAVIOR *********************
OrbitBehavior orbit = new OrbitBehavior(cv);
orbit.setSchedulingBounds(new BoundingSphere());
su.getViewingPlatform().setViewPlatformBehavior(orbit);
su.addBranchGraph(bg);
}
private BranchGroup createSceneGraph() {
BranchGroup root = new BranchGroup();
// ******************** CRIAÇÃO DO BOUNDINGSPHERE *********************
BoundingSphere bounds = new BoundingSphere();
// ******************** CRIAÇÃO DO Triangulo *********************
Appearance apR1 = createRobotAppearance1();
Group robot1 = createRobot1(apR1);
Appearance apR3 = createRobotAppearance3();
Group robot3 = createRobot3(apR3);
// ******************** CRIAÇÃO DO TRANSFORMGROUP *********************
Transform3D trScale = new Transform3D();
trScale.setScale(0.15);
TransformGroup tgP = new TransformGroup(trScale);
// ******************** COLOCAR TRIANGULO NO CENTRO DO ECRAN *********************
Transform3D trx = new Transform3D();
trx.setTranslation(new Vector3f(-2.5f,-2.5f,0f));
TransformGroup tgTransl = new TransformGroup(trx);
tgP.addChild(tgTransl);
root.addChild(tgP);
// ******************** CRIAÇÃO DO POSITIONPATHINTERPOLATOR *********Separados*********************
Point3f[] positions = {new Point3f(2.828f,0.48f,0), new Point3f(2.02f,0.48f,0.0f),
new Point3f(1.22f,0.48f,0.0f), new Point3f(0.48f,0.48f,0.0f)};
float[] knots = {0f,0.3f,0.6f,1f};
Alpha alpha = new Alpha(-1,40000);
TransformGroup target = new TransformGroup();
target.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
target.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
target.addChild(createRobot3(apR3));
Transform3D axis = new Transform3D();
PositionPathInterpolator interpolator = new PositionPathInterpolator(alpha, target, axis, knots, positions);
interpolator.setSchedulingBounds(bounds);
tgTransl.addChild(target);
root.addChild(interpolator);
Point3f[] positions1 = {new Point3f(0.48f,1.22f,0.0f),new Point3f(0.48f,2.02f,0.0f), new Point3f(0.48f,2.64f,0.0f)};
float[] knots1 = {0f,0.5f,1f};
Alpha alpha1 = new Alpha(-1,40000);
TransformGroup target1 = new TransformGroup();
target1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
target1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
target1.addChild(createRobot1(apR1));
Transform3D axis1 = new Transform3D();
PositionPathInterpolator interpolator1 = new PositionPathInterpolator(alpha1, target1, axis1, knots1, positions1);
interpolator1.setSchedulingBounds(bounds);
tgTransl.addChild(target1);
root.addChild(interpolator1);
// ******************** CRIAÇÃO DO BACKGROUND *********************
Background background = createBackground();
background.setApplicationBounds(bounds);
root.addChild(background);
return root;
}
// ******************** COR DO TRIANGULO *********************
Appearance ap12 = createTextureAppearance12();
private Appearance ap;
Appearance createTextureAppearance12(){
Appearance ap12 = new Appearance();
URL filename =
getClass().getClassLoader().getResource("Cilindro Grande.png");
TextureLoader loader = new TextureLoader(filename, this);
ImageComponent2D image = loader.getImage();
if(image == null) {
System.out.println("can't find texture file.");
}
Texture2D texture = new Texture2D
(Texture.BASE_LEVEL, Texture.RGBA,
image.getWidth(), image.getHeight());
texture.setImage(0, image);
texture.setEnable(true);
texture.setMagFilter(Texture.BASE_LEVEL_LINEAR);
texture.setMinFilter(Texture.BASE_LEVEL_LINEAR);
ap12.setTexture(texture);
return ap12;
}
Background createBackground(){
Background background = new Background(0,0,0);
return background;
}
// ******************** TRIANGULO PARA CIMA *********************
Group createRobot1(Appearance ap10) {
Group robot1 = new Group();
Transform3D tr = new Transform3D();
// ******************** CILINDRO DE BAIXO *********************
tr.setTranslation(new Vector3d(0,0,0));
tr.setRotation(new AxisAngle4d(1, 0, 0, Math.PI/2));
Box c40 = new Box(0.24f, 0.12f, 0.33f, Primitive.GENERATE_TEXTURE_COORDS, ap);
TransformGroup c40tg = new TransformGroup(tr);
c40tg.addChild(c40);
robot1.addChild(c40tg);
tr.setIdentity();
return robot1;
}
Appearance createRobotAppearance1(){
Appearance appear = new Appearance();
URL filename = getClass().getClassLoader().getResource("marble_2.jpg");
TextureLoader loader = new TextureLoader(filename, this);
Texture texture = loader.getTexture();
appear.setTexture(texture);
return appear;
}
// ******************** TRIANGULO DE LADO *********************
Group createRobot3(Appearance ap10) {
Group robot3 = new Group();
Transform3D tr = new Transform3D();
// ******************** CILINDRO DE BAIXO *********************
tr.setTranslation(new Vector3d(0,0,0));
tr.setRotation(new AxisAngle4d(1, 0, 0, Math.PI/2));
Cylinder c60 = new Cylinder(0.24f,0.12f, Cylinder.GENERATE_NORMALS, 50, 2, ap12);
TransformGroup c60tg = new TransformGroup(tr);
c60tg.addChild(c60);
robot3.addChild(c60tg);
tr.setIdentity();
return robot3;
}
Appearance createRobotAppearance3(){
Appearance appear = new Appearance();
URL filename = getClass().getClassLoader().getResource("marble_2.jpg");
TextureLoader loader = new TextureLoader(filename, this);
Texture texture = loader.getTexture();
appear.setTexture(texture);
return appear;
}
}