我试图在我的游戏中使用Java(Processing)增强的for循环,但似乎我无法在其他循环中调用其他类。关于如何解决这个问题的任何想法?
void setup() {
size(1000, 1000);
rLife = new ArrayList<RegLife>();
for (int i = 0; i < rLife.size(); i++) {
rLife.add(new RegLife(width/2, height/2));
}
lLives = new ArrayList<largeLife>();
for (int i = 0; i < lLives.size(); i++) {
lLives.add(new largeLife(width/2, height/2));
}
}
void draw() {
background(255);
for (largeLife l : lLives) {
l.seek(r);
l.update();
l.display();
}
for (RegLife r : rLife) {
r.stayWithin();
r.update();
r.walk();
r.withinRadius(r);
r.display();
}
}
我遇到的问题是
for (largeLife l : lLives) {
l.seek(r);
我收到错误消息“变量'r'不存在”但我在课堂上调用了它
void seek(RegLife r) {
PVector desired = PVector.sub(r.posi,posi);
desired.setMag(speed);
PVector steer = PVector.sub(desired,velo);
applyForce(steer);
}
有这个问题的解决方案吗?
简单地说,for-block具有明确定义的范围,其开头和结尾以及用于单行/多行块的{}
s以及用于省略{}
s的for-blocks的一个语句。
因此,在draw
中,您尝试使用一个真正不存在的变量。在您的示例中,r
仅在此范围内:
for (RegLife r : rLife) {
// use r here all you want.
}
但是,你不能在这里使用它:
for (largeLife l : lLives) {
// r does not exist here..
l.seek(r);
}
根据你想要做的事情你可以像这里一样嵌套它们:
for (RegLife r : rLife) {
// use r here all you want.
for (largeLife l : lLives) {
// and use it here too..
// if that makes sense.
l.seek(r);
}
}
好吧..是的。在该绘制方法中没有变量“r”。