Boa noite estou no capítulo para desenhar cano no Canvas, porém quando coloco o this.cano.DesenhaNo(canvas) e emulo aparece escrito infelizmente Jumper parou de rodar. Segue abaixo o código da classe Game e da classe cano.
Classe Game
public class Game extends SurfaceView implements Runnable, View.OnTouchListener{
private Passaro passaro;
private Cano cano;
private Bitmap background;
private Tela tela;
private final SurfaceHolder holder= getHolder();
public void inicia(){
this.estaRodando=true;
}
public void cancela(){
this.estaRodando=false;
}
private Boolean estaRodando = true;
private void inicializaElementos(){
Bitmap back= BitmapFactory.decodeResource(getResources(),
R.drawable.background);
this.background=Bitmap.createScaledBitmap(back,
back.getWidth(),tela.getAltura(),false);
this.passaro= new Passaro();
this.cano= new Cano(this.tela,200);
}
public Game(Context context){
super(context);
setOnTouchListener(this);
this.tela= new Tela(context);
inicializaElementos();
}
@Override
public void run() {
while(this.estaRodando){
if(!this.holder.getSurface().isValid()) continue;
Canvas canvas= this.holder.lockCanvas();
canvas.drawBitmap(this.background,0,0,null);
this.passaro.desenhaNo(canvas);
this.cano.desenhaNo(canvas);
this.passaro.cai();
this.holder.unlockCanvasAndPost(canvas);
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
this.passaro.pula();
return false;
}
}
Agora segue classe cano
package casadocodigo.br.com.jumper;
import android.graphics.Canvas;
import android.graphics.Paint;
public class Cano {
private static final Paint VERDE= Cores.getCorDoCano();
private static int TAMANHO_DO_CANO=250;
private static int LARGURA_DO_CANO=100;
private int alturaDoCanoInferior;
private Tela tela;
private int posicao;
public Cano(Tela tela, int posicao){
this.posicao=posicao;
this.alturaDoCanoInferior=tela.getAltura()-TAMANHO_DO_CANO;
}
public void desenhaNo(Canvas canvas){
desenhaCanoInferiorNo(canvas);
}
private void desenhaCanoInferiorNo(Canvas canvas){
canvas.drawRect(this.posicao,
this.alturaDoCanoInferior,
this.posicao+LARGURA_DO_CANO,
this.tela.getAltura(),VERDE);
}
}
E agora uma imagem do que aparece quando emulo