@Override
public void run() {
Paint p = new Paint();
int time = 0;
int timeBullet = 0;
Canvas canvas;
try {
while (runState){
//描绘子弹部分
if(selectedPlane != null){
if(timeBullet++ == 4){
bullets.add(new Bullet(config, selectedPlane, bullets));
timeBullet = 0;
}
}
canvas = new Canvas(lsecCache);
//默认描绘
for(GameViews gameImage : (ArrayList<GameViews>)gameImages.clone()){
if(gameImage instanceof Enemy){
Enemy enemy = (Enemy) gameImage;
if(!enemy.flag){
enemy.attacked(bullets);
}else {
if(enemy.index++ > 3){
gameImages.remove(gameImage);
continue;
}
}
}
canvas.drawBitmap(gameImage.getBitmap(), gameImage.getX(), gameImage.getY(), p);
}
for(GameViews gameImage : (ArrayList<GameViews>)bullets.clone()){
canvas.drawBitmap(gameImage.getBitmap(), gameImage.getX(), gameImage.getY(), p);
}
if(time++ == 50){
gameImages.add(new Enemy(config, enemys));
time = 0;
}
Canvas c = holder.lockCanvas();
// c.drawBitmap(bg , 0, 0, p);
c.drawBitmap(lsecCache, 0, 0, p);
holder.unlockCanvasAndPost(c);
Thread.sleep(10);
}
}catch (Exception e){
Log.e("APP.TAG","异常",e);
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
config.setContext(context);
config.setSpeed(4);
config.setGameViewses(gameImages);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
runState = true;
//获取屏幕尺寸
config.setWidth(width);
config.setHeight(height);
init();
this.holder = holder;
new Thread(this).start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
runState = false;
}
@Override
public boolean onTouch(View v, MotionEvent event){
if(event.getAction() == MotionEvent.ACTION_DOWN){
for(GameViews gameView : gameImages) {
if(gameView instanceof Hero){
if(gameView.selected(event.getX(), event.getY())){
// Log.i("APP.TAG", "我被选中!");
selectedPlane = (Hero) gameView;
}else {
selectedPlane = null;
}
break;
}
}
}else if(event.getAction() == MotionEvent.ACTION_MOVE){
if(selectedPlane != null){
selectedPlane.setX((int) event.getX() - selectedPlane.getBitmap().getWidth()/2);
selectedPlane.setY((int) event.getY() - selectedPlane.getBitmap().getHeight()/2);
}
}else if(event.getAction() == MotionEvent.ACTION_UP){
selectedPlane = null;
}
return true;
}
}
发射子弹时,敌机加速了,是onTouch引发的,查过不是参数配置引起的,求解决