我疯狂地试图解决这个问题。我正在尝试制作一个Rect(矩形)的数组或arraylist,我可以更新坐标并在屏幕上绘图(使它们移动)。
现在我有一个名为Fire的单独类,其中我在每次迭代时使用自己的onDraw()方法中的新坐标创建一个新矩形。在View的onDraw()方法的第一次迭代中,我向一个arraylist添加了一个新的Fire。
在Fire课程中我有:
public void onDraw(Canvas canvas){
moveF();
Rect r = new Rect(_l,_t,_r,_b);
canvas.drawRect(r, paint);
}
在View类中我有:
protected void onDraw(Canvas canvas) {
int i = 0;
canvas.drawColor(Color.WHITE);
if(i==0){
fires.add(new Fire(20,100,40,120));
i++;
}
for(Fire fire : fires){
fire.onDraw(canvas);
}
}
我摆脱了无意义的代码部分,但这是重要的东西。矩形打印,但它也打印所有以前的位置,我不明白为什么。我一直在努力解决这个问题,你们给予的任何帮助都将非常感激。我能够在java中实现这一点,但是android给了我一些问题。
提前致谢!!!
答案 0 :(得分:0)
从代码中,您将新的矩形添加到列表中,然后绘制每个矩形。但是根据描述,您似乎只想绘制一个具有更新坐标的矩形。
不是每次都创建一个新的Rect,而是重用一个矩形并用set(...)
更新它的坐标。
第二个问题是您设置i=0
然后立即检查i==0
,这将始终为真。尝试这样的事情:
static final Rect rect = new Rect();
// your code here
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
moveF();
rect.set(_l,_t,_r,_b);
canvas.drawRect(rect, paint);
}
答案 1 :(得分:-1)
每次调用View.onDraw都会创建一个新的火并将其添加到列表中。 然后你迭代所有的火并绘制它们。 所以你会得到越来越多的火力。 所有火灾都是以相同的方式移动还是有一些随机组件? 可能是你没有看到一次火灾的先前位置,但是有很多火灾在同一条路径上移动。
你是想让一场火势四处移动,还是越来越多的火灾独立移动?