火箭队在课堂上移动。处理

时间:2017-03-04 17:45:09

标签: java processing

我有一个动态图像作为背景

PImage background;
int x=0; //global variable background location
rocket Rocket;

void setup(){
 size(800,400);
 background = loadImage("spaceBackground.jpg");
 background.resize(width,height);
 Rocket = new rocket();
}

void draw ()
{
 image(background, x, 0); //draw background twice adjacent
 image(background, x+background.width, 0);
 x -=4;
 if(x == -background.width)
 x=0; //wrap background
 Rocket.defender();
 Rocket.move();
}

在另一个班级,我试图让火箭上下移动

class rocket {
  float x;
  float y;
  float speedy;
  boolean up;
  boolean down;

 rocket(){
   x = 50;
   y = 200;
   speedy = 3;
 }

void move() {
 if(up)
 {
  y = y - speedy;
 }
 if(down)
 {
  y = y + speedy;
 }
} 

void defender(){
 fill(255,0,0);
 rect(x,y,50,20);
 triangle(x+50,y,x+50,y+20,x+60,y+10);
 fill(0,0,100);
 rect(x,y-10,20,10);
}

void keyPressed(){
  if(keyCode == UP)
  {
   up = true;
  }
  if(keyCode == DOWN)
  {
   down = true;
  }
}

void keyReleased(){
  if(keyCode == UP)
  {
   up = false;
  }
  if(keyCode == DOWN)
  {
   down = false;
  }
}   
}

火箭将展示但不会动弹。我尝试了所有我知道但没有任何作用。我也尝试过火箭级别,就像一个项目本身和火箭移动一样,所以它必须与班级有关。我对编码很陌生,所以请记住这一点,提前谢谢你。

1 个答案:

答案 0 :(得分:0)

keyPressed()keyReleased()函数(以及任何其他事件函数)需要在草图级别,而不是在另一个类中。如果他们在另一个班级内,则Processing不知道如何找到它们。

所以,你需要做的是将keyPressed()keyReleased()函数移到草图上,然后调用Rocket类上的函数(类名应该从上面开始 - 大小写,顺便说一句),类似于您从草图级rocket.defender()函数调用rocket.move()draw()(变量名称应以小写字母开头)的方式。

相关问题