有人可以给我一个例子,说明子类如何访问父类的画布以绘制某些东西,即位图:

BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPurgeable = true;
    Bitmap bitmap_explosion = BitmapFactory.decodeResource(context.getResources(),com.forwardapps.tanks.R.drawable.explosion, options);


context.drawBitmap(bitmap_explosion,x,y,null);

这是我在孩子,父母中所拥有的:

Explosion xplode = new Explosion(this._context, 50, 50);


我已经环顾了几个小时,没有运气。

最佳答案

您不会在代码中随机绘制位图。您需要将您的对象提交到某种类型的渲染视图。因此,例如,您可能有:

public class Scene extends View{
  private List<Explosions> explosions = new ArrayList<Explosions>();
  @Override
  public void onDraw(){
     //obviously i have a concurrency issue here.. meh
     for (Explosions e:explosions){
     /// draw your explosions here

     }

  }

  public void addExplosion(Explosions x){
       explosions.add(x)
  }
}


调用添加爆炸时,不要忘记调用postInvalidate要求视图重绘其自身。

但是要最直接地回答您的问题,您希望子类实现Drawable,然后将画布从父类onDraw()方法传递到子类onDraw方法。

09-03 21:53