我有这个arraylist:
// Add predators
predators = new ArrayList();
for (int i = 0; i < predNum; i++) {
Creature predator = new Creature(random(width), random(height), 2);
predators.add(predator);
}
如何构造语句,以便每500帧删除predators
arraylist中的最后一个元素?它需要某种循环吗?
if (frameCount == 500){
predators.remove(1)
}
答案 0 :(得分:5)
如果你已经有一个跟踪你所在框架的变量,你可以使用这个if语句:
61|00
由于您使用if (frameCount % 500 == 0) {
predators.remove(1); //use this if you want to remove whatever is at index 1 every 500 frames
predators.remove(predators.size() -1); //use this if you want to remove the last item in the ArrayList
}
作为ArrayList的remove方法的参数,我也这样做了,但请注意,这将始终删除arrayList中的第二个对象,因为arrayList索引从0开始计数。
只有每次framecount为500的倍数时才会运行。
如果你还没有跟踪frameCount,你必须将1
放在每帧执行的循环中。
答案 1 :(得分:2)
draw()
函数每秒调用60次,因此您将使用循环。每次调用frameCount
时,draw()
变量都会自动递增。
与Coding Wombat一样,您可以使用the modulo operator来确定变量(如frameCount
)何时是值的倍数(如500
)。
你可以将这些想法结合起来做一次500帧的事情:
ArrayList<Creature> predators = new ArrayList<Creature>();
void setup(){
for (int i = 0; i < predNum; i++) {
Creature predator = new Creature(random(width), random(height), 2);
predators.add(predator);
}
}
void draw(){
if (frameCount % 500 == 0){
predators.remove(predators.size()-1);
}
//draw your frame
}