老师今天开始讲android的游戏,讲到了view和surfaceview
下面是view的演示部分
private Paint paint;
//游戏里很少用double,都是用long
private int x=10,y=10;
private Thread th;
//线程控制
private boolean flag;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public MyView(Context context) {
super(context);
paint=new Paint();
paint.setColor(Color.BLUE);
setFocusable(true);
setFocusableInTouchMode(true);
flag=true;
th=new Thread(this);
th.start();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("点我", x, y, paint);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_DPAD_DOWN) {
System.out.println("down");
y++;
}
//重绘方法
invalidate();
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//必须改为true,否则就会执行一次
x=(int) event.getX();
y=(int) event.getY();
invalidate();
return true;
}
@Override
public void run() {
while (flag) {
System.out.println("run");
x++;
y++;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
postInvalidate();
}
}
演示gif动画,暂无