Android 在画布上绘制两幅相同图像时出现问题
我这里有一个问题,当我有2摩尔的时候,它会崩溃,但如果只有一摩尔,它就不会崩溃Android 在画布上绘制两幅相同图像时出现问题,android,math,canvas,surfaceview,Android,Math,Canvas,Surfaceview,我这里有一个问题,当我有2摩尔的时候,它会崩溃,但如果只有一摩尔,它就不会崩溃 private int randX(){ int x = (int) Math.round((Math.random()*CollierSurface.getWidth())); if (x<CollierSurface.getWidth()) randX(); return x; } private int randY(){ int y = (int) Math.round(
private int randX(){
int x = (int) Math.round((Math.random()*CollierSurface.getWidth()));
if (x<CollierSurface.getWidth()) randX();
return x;
}
private int randY(){
int y = (int) Math.round((Math.random()*CollierSurface.getHeight()));
if (y<CollierSurface.getWidth()) randY();
return y;
}
private void DrawMoles() {
if (!_canDraw) return;
try {
CollierCanvas = CollierHolder.lockCanvas();
Drawable background = getResources().getDrawable(R.drawable.collierabove);
background.setBounds(0, 0, CollierSurface.getWidth(), CollierSurface.getHeight());
background.draw(CollierCanvas);
newMole(randX(), randY(), mole1);
newMole(randX(), randY(), mole2);
} catch (SurfaceHolder.BadSurfaceTypeException e) {
} finally {
if (CollierCanvas != null){
CollierHolder.unlockCanvasAndPost(CollierCanvas);
}
}
}
private void newMole(int x, int y, Drawable mole){
mole = getResources().getDrawable(R.drawable.mole);
mole.mutate().setBounds((int)x-(mole.getIntrinsicWidth()),
(int)y-(mole.getIntrinsicHeight()),
(int)x+(mole.getIntrinsicWidth()),
(int)y+(mole.getIntrinsicHeight()));
mole.draw(CollierCanvas);
}
这是随机的x和y花费的时间太长了 我现在就用这个
private int randX(){
Random random = new Random();
int x = random.nextInt(CollierSurface.getWidth());
return x;
}
private int randY(){
Random random = new Random();
int y = random.nextInt(CollierSurface.getHeight());
return y;
}
请把撞车的日志贴出来,我搞不懂!我一直在试图弄清楚除了idk之外,是否有异常或其他原因。
启动超时已过期,放弃唤醒锁代码>表示代码花费的时间太长。也许有一个循环?你的应用程序是否进入了那个障碍?
private int randX(){
Random random = new Random();
int x = random.nextInt(CollierSurface.getWidth());
return x;
}
private int randY(){
Random random = new Random();
int y = random.nextInt(CollierSurface.getHeight());
return y;
}