package test.testing;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
class MyView extends SurfaceView implements SurfaceHolder.Callback {
private Drawable mLanderImage;
private Drawable mFiringImage;
private Drawable mCrashedImage;
private Bitmap mBackgroundImage;
private SurfaceHolder holder;
private myThread mThread;
private Handler mHandler;
private int mLanderWidth;
private int mLanderHeight;
private OnTouchListener mOnTouch;
private Context mContext;
public MyView(Context context,AttributeSet attrs) {
super(context,attrs);
mContext = context;
Resources res = context.getResources();
mLanderImage = context.getResources().getDrawable(
R.drawable.lander_plain);
mFiringImage = context.getResources().getDrawable(
R.drawable.lander_firing);
mCrashedImage = context.getResources().getDrawable(
R.drawable.lander_crashed);
mLanderWidth = mLanderImage.getIntrinsicWidth();
mLanderHeight = mLanderImage.getIntrinsicHeight();
mBackgroundImage = BitmapFactory.decodeResource(res,
R.drawable.xiaguan);
holder = this.getHolder();
holder.addCallback(this);
setFocusable(true);
mThread = new myThread();
mHandler = new Handler();
}
float x = 0;
float y = 0;
public void move(float pixx, float pixy, int rot){
if (x >=0 && x <= 4*width ){
x = x + pixx;
}
if (x <=0){
x =0;
}
if (x >= 4*width){
x = 4*width;
}
Log.d("@@@@@@@@@@@@@@@x@@@@@@@@@@@@@@@@@", "x = "+x);
if (y >=0 && y <= 2*height)
y = y + pixy;
if (y <= 0){
y = 0;
}
if (y >= 2*height)
y = 2*height;
Log.d("@@@@@@@@@@@@@@@y@@@@@@@@@@@@@@@@@", "y = "+y);
rotation = rot;
mHandler.post(mThread);
if (x > 670 && x < 750 && y > 400 && y < 500){
Intent intent = new Intent ("action.next");
mContext.sendBroadcast(intent);
}
}
class myThread extends Thread {
@Override
public void run() {
Canvas canvas = holder.lockCanvas(null);
doDraw(canvas);
holder.unlockCanvasAndPost(canvas);
}
public void setSurfaceSize(int width, int height){
mBackgroundImage = mBackgroundImage.createScaledBitmap(
mBackgroundImage, width*5, height*3, true);
}
}
private int width= 1 ;
private int height = 1 ;
private int rotation = 0;
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// X = width;
// Y = height;
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
width = getWidth();
height = getHeight();
mThread.setSurfaceSize(width, height);
mThread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
try {
mThread.join();
mHandler.removeCallbacks(mThread);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
boolean stop = true;
private void doDraw(Canvas canvas) {
Log.d("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@","dodraw ");
synchronized (holder) {
Log.d("@@@@@@@@@@@@@@@@@@@@@@@@@@","@@@@"+x);
canvas.drawBitmap(mBackgroundImage, -x, -y, null);
canvas.save();
// int m;
// int n;
// m = Math.round(x);
// n = Math.round(y);
canvas.rotate(rotation, 150, 250);
if(stop){
mLanderImage.setBounds(150-mLanderWidth/2, 250-mLanderHeight/2, 150+mLanderWidth/2, 250+mLanderHeight/2);
mLanderImage.draw(canvas);
}else{
mFiringImage.setBounds(150-mLanderWidth/2, 250-mLanderHeight/2, 150+mLanderWidth/2, 250+mLanderHeight/2);
mFiringImage.draw(canvas);
}
canvas.restore();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
android SurfaceView编写小游戏简单代码
4星 · 超过85%的资源 需积分: 15 112 下载量 19 浏览量
2010-04-06
13:16:40
上传
评论 5
收藏 1.71MB GZ 举报
温馨提示
共29个文件
class:10个
png:7个
java:3个
android SurfaceView编写小游戏简单代码,通俗易懂,控制一个游戏精灵在地图中来回移动。
资源推荐
资源详情
资源评论
收起资源包目录
MyGame.tar.gz (29个子文件)
MyGame
.project 809B
default.properties 449B
bin
test
testing
R$string.class 409B
R$layout.class 376B
R$drawable.class 598B
MyGame.class 3KB
R.class 489B
MyGame$1.class 2KB
R$attr.class 322B
MyView$myThread.class 1KB
MyView.class 5KB
R$id.class 522B
MyGame.apk 586KB
resources.ap_ 579KB
classes.dex 10KB
AndroidManifest.xml 631B
src
test
testing
MyView.java 4KB
MyGame.java 3KB
res
values
strings.xml 163B
layout
main.xml 2KB
drawable
btn_circle_normal.png 2KB
lander_firing.png 12KB
lander_plain.png 11KB
lander_crashed.png 12KB
xiaguan.png 512KB
icon.png 3KB
earthrise.png 36KB
.classpath 259B
gen
test
testing
R.java 1KB
assets
共 29 条
- 1
liu851104
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页