Processing/Java-类数组有问题
这可能是一个非常愚蠢的问题,但我很难在屏幕上显示我的课程的多个副本。 我创建了一个小行星类,可以在屏幕上生成和移动小行星。然而,当我尝试在我的主体中调用这个类的多个版本时,它仍然只显示一个小行星 MainProcessing/Java-类数组有问题,java,arrays,class,object,processing,Java,Arrays,Class,Object,Processing,这可能是一个非常愚蠢的问题,但我很难在屏幕上显示我的课程的多个副本。 我创建了一个小行星类,可以在屏幕上生成和移动小行星。然而,当我尝试在我的主体中调用这个类的多个版本时,它仍然只显示一个小行星 Main int lrgAsteroids = 4; Asteroid[] asteroid = new Asteroid[lrgAsteroids]; void setup() { size(800,800); for (int i = 0; i < lrgAsteroids; i++
int lrgAsteroids = 4;
Asteroid[] asteroid = new Asteroid[lrgAsteroids];
void setup() {
size(800,800);
for (int i = 0; i < lrgAsteroids; i++) {
asteroid[i] = new Asteroid();
asteroid[i].display();
}
}
void draw() {
background(0);
asteroid[0].move();
asteroid[1].move();
for (int i = 0; i < lrgAsteroids; i++) {
asteroid[i].move();
}
}
int-lrgAsteroids=4;
小行星[]小行星=新小行星[lrgAsteroids];
无效设置(){
尺寸(800800);
对于(int i=0;i
小行星等级。
class Asteroid {
PImage lrgAsteroid;
float xpos, ypos;
float yDirection;
float xDirection;
float radians = 0;
Asteroid() {
lrgAsteroid = loadImage("largeAsteroid.png");
xpos = random(0,710);
ypos = random(0,710);
int xDir = (int) random(2);
int yDir = (int) random(2);
if (xDir == 1) {
xDirection = 1;
} else if (xDir == 0) {
xDirection = -1;
}
if (yDir == 1) {
yDirection = 1;
} else if (yDir == 0) {
yDirection = -1;
}
}
void display() {
image(lrgAsteroid, xpos, ypos);
}
void move() {
background(0);
pushMatrix();
imageMode(CENTER);
translate(xpos, ypos);
rotate(radians);
image(lrgAsteroid, 0, 0);
popMatrix();
if (xpos <= 0) {
xpos = random(750,800);
} else if (xpos >= 800) {
xpos = random(0,100);
}
if (ypos <= 0) {
ypos = random(750,800);
} else if (ypos >= 800) {
ypos = random(0,100);
}
radians += 0.02;
xpos += xDirection;
ypos += yDirection;
}
}
class小行星{
PImage lrgAsteroid;
浮动XPO、YPO;
浮动方向;
浮动方向;
浮动弧度=0;
小行星(){
lrgAsteroid=loadImage(“largeAsteroid.png”);
xpos=随机(0710);
ypos=随机(0710);
int-xDir=(int)随机(2);
int-yDir=(int)随机(2);
如果(xDir==1){
xDirection=1;
}else if(xDir==0){
xDirection=-1;
}
如果(yDir==1){
y方向=1;
}else if(yDir==0){
y方向=-1;
}
}
无效显示(){
图像(lrgAsteroid、xpos、ypos);
}
无效移动(){
背景(0);
pushMatrix();
图像模式(中心);
翻译(XPO、YPO);
旋转(弧度);
图像(lrgAsteroid,0,0);
popMatrix();
如果(xpos=800){
xpos=随机(0100);
}
如果(ypos=800){
ypos=随机(0100);
}
弧度+=0.02;
xpos+=xDirection;
ypos+=Y方向;
}
}
任何帮助都将不胜感激 我认为您创建的所有实例都得到了相同的xDir和yDir,或者相同的XPO和YPO,您可以打印它以便查看这是否是问题所在吗
void setup() {
size(800,800);
for (int i = 0; i < lrgAsteroids; i++) {
asteroid[i] = new Asteroid();
// add these please to see what happens
System.out.println(asteroid[i].xDirection+" "+asteroid[i].yDirection);
}
}
void draw() {
background(0);
asteroid[0].move();
asteroid[1].move();
for (int i = 0; i < lrgAsteroids; i++) {
asteroid[i].move();
// add these please to see what happens
System.out.println(asteroid[i].xpos+" "+asteroid[i].ypos);
}
void setup(){
尺寸(800800);
对于(int i=0;i
错误非常简单。实际上,在绘制小行星之前,显示是清晰的,因为背景(0);
方法move()
。在draw()开始时清除背景就足够了
从方法move()
中删除背景(0);
:
小行星(){
// [...]
无效移动(){
//背景(0);你是个天才。谢谢