触摸画布时弹出位图

时间:2014-07-30 00:49:01

标签: android animation android-canvas bitmapimage bounce

我试图制作游戏,但是当我触摸屏幕时,我无法让我的精灵方法在抛物线路径中弹跳,如果是对象(它是一个对象)将图像变成画布)触摸和屏幕边缘它应该反弹,我将非常感谢你的帮助,非常感谢你。这是代码:

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class Juego extends View implements OnTouchListener {
 Bitmap  bmap ;//Capa de bits
 Paint paint = new Paint();//estilos 
 Canvas canvas;
 int position,x,y,counter=0;
 int vX=5, vY=10;
 Handler h;
 Resources res = getResources();
 Boolean flag;
 int FRAME_RATE=15;
 int[] imageAvoider = {
         R.drawable.robot};

public Juego(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.setOnTouchListener(this);  
    h = new Handler();
}


public void inicio(Canvas canvas){
    x = ((canvas.getWidth()-bmap.getWidth())/2);
    y = ((canvas.getHeight()-bmap.getHeight())/2);
    paint.setColor(Color.RED);
    paint.setTypeface(MainActivity.letra);
    paint.setTextSize(canvas.getWidth()/12);
    paint.setTextAlign(Align.CENTER);
    canvas.drawText("Pole Avoider", canvas.getWidth()/2, canvas.getHeight()/4, paint);
    paint.setTextSize(canvas.getWidth()/8);
    canvas.drawText("Tap me", canvas.getWidth()/2, (canvas.getHeight()/4)*3, paint);
}
@SuppressLint("DrawAllocation") 
public void onDraw(Canvas canvas){
    super.onDraw(canvas);
    bmap = BitmapFactory.decodeResource(res,imageAvoider[position]);
    if (flag==true){
    inicio(canvas);
    }
   //  HERE IS THE CODE I WANT TO REPLACE  
   //  x += vX;
   //  y += vY;
   //
   //  if ((x > this.getWidth() - bmap.getWidth()) || (x < 0)) {
   //   vX=vX*-1;
   //  }
   //if ((y > this.getWidth() - bmap.getWidth()) || (y < 0)) {
   //   vY=vY*-1;
   //}
   // h.postDelayed(r, FRAME_RATE);
    canvas.drawBitmap(bmap,x,y, paint);
}  

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);  
}


private Runnable r = new Runnable() {
    @Override
    public void run() {
        invalidate(); 
    }
};
public boolean onTouch (View view, MotionEvent event) {
    flag=false;
     switch (event.getAction()){
     case MotionEvent.ACTION_DOWN:
         position=0;
         MainActivity.sonido();
     invalidate();
     break;
     case MotionEvent.ACTION_UP:
         position=0;
    invalidate();
    break;
    default: return false;
}
     return true;
}
}

0 个答案:

没有答案