有人可以给我一个例子,说明子类如何访问父类的画布以绘制某些东西,即位图:
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
方法。