//处理各个SurfaceView发送的消息
Handler myHandler = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what)
{
case GameMessage.MAINMENU_VIEW:
//gotoMainMenuView();
break;
case GameMessage.GAME_VIEW:
gotoGameView();
break;
}
}
}
解决方案 »
- gallery和ImageSwitcher显示网络图片问题
- 关于android上显示PDF
- android webview页面 中cookie的问题,在线等
- 请教高手高手高高手!!!!!!!
- android 创建快捷方式
- Android应用开发前景如何
- onCreateOptionsMenu,包含6个以上菜单项时,怎么改文言?
- 高难度问题,activity在设置了priority后通过queryIntentActivities无法查询到其他同类intent
- 刚学Android,问一个小白问题
- 屏幕翻转和蓝牙通信阻塞问题
- 关于音乐播放器中service的使用方法
- 关于Andriod的一个小小的逻辑问题
MainActivity activity;
Paint paint;
//线程引用
GameViewThread gameViewThread;//游戏界面刷新主线程
CreatFishThread creatFishThread;////产生金鱼的线程
//位图引用
Bitmap bgBitmap;
Bitmap topBoxBitmap;
Bitmap bottomBoxBitmap;
Bitmap btnJianBitmap;
Bitmap btnJiaBitmap;
Bitmap btnZTBitmap;
Bitmap btnJieTu;
Bitmap btnJinyu;
Bitmap btnNLBitmap;
Bitmap[] btn20Bitmap;
Bitmap[] btnSunBitmap;
Bitmap[] btnMRYBitmap;
Bitmap[] btnBXBitmap;
Bitmap cannonBitmap;//大炮位图
Bitmap bulletBitmap;//子弹位图
public Bitmap goldfishBitmap;//金鱼位图
//列表引用
public List<Goldfish> allGoldfish;//所有金鱼
public List<TipText> allTipText;//所有提示文本
//对象引用
Cannon cannon;//大炮对象
public Bullet bullet=null;//子弹对象
//状态值
public float angle=(float) (Math.PI/6);//炮筒仰角
//声音相关变量
public GameView(MainActivity activity) {
super(activity);
this.activity=activity;
//获得焦点并设置为可触控
this.requestFocus();
this.setFocusableInTouchMode(true);
//注册回调接口
getHolder().addCallback(this);
} public void onDraw(Canvas canvas) {
super.onDraw(canvas);
try{
int w=Constant.SCREEN_W;
int h=Constant.SCREEN_H;
Rect rect=new Rect(0, 0, w, h);
canvas.drawBitmap(bgBitmap, null, rect, paint);
//绘制子弹
if(bullet!=null){
bullet.drawMe(canvas, paint);
}
//绘制金鱼
List<Goldfish> allGoldfish1=new Vector<Goldfish>(allGoldfish);//复制目标列表
for(Goldfish g : allGoldfish1){
g.drawMe(canvas, paint);
}
//绘制UI
canvas.drawBitmap(topBoxBitmap, (w-317)/2, 0 , paint);
canvas.drawBitmap(bottomBoxBitmap, 0, h-85, paint);
canvas.drawBitmap(btnJianBitmap, 182, h-27, paint);
canvas.drawBitmap(btnJiaBitmap, 260, h-27, paint);
canvas.drawBitmap(btnZTBitmap, null, new Rect(10,0,50,40), paint);
canvas.drawBitmap(btnJieTu, 400, 2, paint);
canvas.drawBitmap(btnJinyu, 440, 2, paint);
canvas.drawBitmap(btnNLBitmap,null, new Rect(305,290,305+30,290+30), paint);
canvas.drawBitmap(btn20Bitmap[0],null, new Rect(350,290,350+30,290+30), paint);
canvas.drawBitmap(btnSunBitmap[0],null, new Rect(382,290,382+30,290+30), paint);
canvas.drawBitmap(btnMRYBitmap[0],null, new Rect(414,290,414+30,290+30), paint);
canvas.drawBitmap(btnBXBitmap[0],null, new Rect(446,290,446+30,290+30), paint);
canvas.drawText("渔夫", 155, 16, paint);
canvas.drawText("1", 237, 16, paint);
//绘制大炮
cannon.drawMe(canvas, paint);
//绘制提示文字
List<TipText> allTipScore=new Vector<TipText>(allTipText);//复制提示文字列表
for(TipText t : allTipScore){
t.drawMe(canvas, paint);
}
}
catch(Exception e){
e.printStackTrace();
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
//计算炮筒仰角
angle=cannon.calcuateAngle(x, y);
break;
case MotionEvent.ACTION_MOVE:
//计算炮筒仰角
angle=cannon.calcuateAngle(x, y);
break;
case MotionEvent.ACTION_UP:
//创建一个子弹并发射
bullet=cannon.creatAndSendBullet();
break;
}
return true;
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
} public void surfaceCreated(SurfaceHolder holder){
paint=new Paint();//创建画笔
paint.setAntiAlias(true);//打开抗锯齿
initBitmap();//初始化位图资源
initSounds();//初始化声音资源
cannon=new Cannon(this,cannonBitmap, bulletBitmap);//创建大炮对象
allGoldfish=new Vector<Goldfish>();//创建金鱼列表
allTipText=new Vector<TipText>();//创建提示分数列表
createAllThreads();//创建所有线程
startAllThreads();//开始所有线程
}
public void surfaceDestroyed(SurfaceHolder holder) { }
//将图片加载
public void initBitmap(){
bgBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bj01);
topBoxBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.top_box);
bottomBoxBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bottom_box);
btnJianBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.btn_jian_hv);
btnJiaBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.btn_jia);
cannonBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.cannon10_1);
bulletBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bullet_test);
goldfishBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.fish_goldfish);
btnZTBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.btn_zt);
btnJieTu=BitmapFactory.decodeResource(getResources(), R.drawable.btn_jietu);
btnJinyu=BitmapFactory.decodeResource(getResources(), R.drawable.btn_jy);
btnNLBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.btn_nl);
btn20Bitmap=new Bitmap[]{
BitmapFactory.decodeResource(getResources(), R.drawable.icon_201),
BitmapFactory.decodeResource(getResources(), R.drawable.icon_202)};
btnSunBitmap=new Bitmap[]{
BitmapFactory.decodeResource(getResources(), R.drawable.icon_sun1),
BitmapFactory.decodeResource(getResources(), R.drawable.icon_sun2)};
btnMRYBitmap=new Bitmap[]{
BitmapFactory.decodeResource(getResources(), R.drawable.icon_mry1),
BitmapFactory.decodeResource(getResources(), R.drawable.icon_mry2)};
btnBXBitmap=new Bitmap[]{
BitmapFactory.decodeResource(getResources(), R.drawable.icon_bx1),
BitmapFactory.decodeResource(getResources(), R.drawable.icon_bx2)};
}
//初始化声音的方法
public void initSounds(){ }
//播放声音的方法
public void playSound(int sound, int loop) { }
//结束游戏的方法
public void overGame(){
}
void createAllThreads(){
gameViewThread=new GameViewThread(this);
creatFishThread=new CreatFishThread(this);
}
void startAllThreads(){
gameViewThread.setFlag(true);
creatFishThread.setFlag(true);
gameViewThread.start();
creatFishThread.start();
}
void stopAllThreads(){
gameViewThread.setFlag(false);
creatFishThread.setFlag(false);
}
}