FPS游戏

简介: 引用:http://www.oschina.net/code/snippet_54100_6233 1 private boolean drawall=false; 02  private RefreshHandler mRedrawHandler = n...

引用:http://www.oschina.net/code/snippet_54100_6233

1 private boolean drawall=false;
02  private RefreshHandler mRedrawHandler = new RefreshHandler();
03     class RefreshHandler extends Handler {
04  
05         @Override
06         public void handleMessage(Message msg) {
07          KetrisCanvas.this.update();
08          KetrisCanvas.this.invalidate();
09         }
10  
11         public void sleep(long delayMillis) {
12          this.removeMessages(0);
13             sendMessageDelayed(obtainMessage(0), delayMillis);
14         }
15     };
16     long mLastMove=0;
17     long mMoveDelay=30;
18     public void update() {
19             long now = System.currentTimeMillis();
20  
21             if (now - mLastMove > mMoveDelay) {
22                 //gameLogic(); 这里是游戏逻辑
23               
24                 mLastMove = now;
25             }
26             mRedrawHandler.sleep(mMoveDelay);
27         
28     }
29 public void onDraw(Canvas canvas)
30 {super.onDraw(canvas);
31  this.paint(); //这里是绘制到缓冲屏幕
32  canvas.drawBitmap(g.offs, 00, g.p);
33 }

[代码] [Java]代码

01 public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback
02  
03
04  
05 在构造方法完成   下面2
06      holder = this.getHolder();//获取holder
07      holder.addCallback(this);
08  
09  
10 @Override
11 public void surfaceChanged(SurfaceHolder holder, int format, int width,
12   int height) {
13  // TODO Auto-generated method stub
14   
15 }
16  
17 Thread t;
18 boolean isrun=true;
19 final SurfaceHolder holder;
20 @Override
21 public void surfaceCreated(SurfaceHolder holder) {
22  // TODO Auto-generated method stub
23   
24   t=new Thread(){
25   public void run()
26   while(isrun)
27   {
28    long start=System.currentTimeMillis();
29       Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);
30     //这里完成游戏逻辑 
31  
32     paint();//这里是屏幕绘制
33       canvas.drawBitmap(g.offs, 00,null );
34       
35       KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);
36       long end=System.currentTimeMillis();
37       if(200>end-start)
38       {
39        try{Thread.sleep(200-(end-start));}catch(Exception e){}
40       }
41   }
42   }
43  };
44  t.start();
45 }
46 @Override
47 public void surfaceDestroyed(SurfaceHolder holder) {
48  // TODO Auto-generated method stub
49  if(t!=null)
50  { isrun=false;
51  }
52 }
相关文章
|
内存技术
flash fps游戏 fps多少为佳
flash fps游戏 fps多少为佳   个人认为是25 比24多1,不过有用吗?
|
Go
枪法即是正义!FPS游戏推荐
从某种角度上来说,穿行在枪林弹雨中,也未尝不是一种属于男生的浪漫。在今天的文段中,我们将为你介绍一些别具一格的FPS游戏。
1683 0
|
8月前
|
图形学
【unity小技巧】最简单的FPS游戏准心跳动动画控制
【unity小技巧】最简单的FPS游戏准心跳动动画控制
75 0
|
网络架构 索引
游戏中的声音播放(1)
好的游戏,一定离不开美妙的音乐支持,但是每款机型对声音的支持能力多有所不同,因此可以在使用之前先探测一下该款手机支持的多媒体格式,当然这个步骤不是必须的。      下面的代码是针对E680i编写的,并且在真机运行成功,程序首先探测了E680i的多媒体支持能力,并且把所有支持的格式显示到屏幕,由于不能一屏完全显示,因此设置了滚动;当滚动到底部或者顶部时,会播放一段乐音序列。
845 0
游戏中的声音播放(2)
在(1)中,实现了探测E680i的音乐播放能力的功能,并且在适当时候播放了一段乐音序列。当然在游戏中一般不会使用如此简单的乐音,而是选择表现力更为丰富的MIDI或者其他声音格式。播放这些文件的方法同样简单。
697 0
|
8月前
|
图形学 开发者
【unity小技巧】FPS游戏后坐力制作思路
【unity小技巧】FPS游戏后坐力制作思路
145 0
为什么游戏流畅需要60帧,而电影流畅只需要24帧?
平时我们看的电影,大都是 24 帧,偶尔有几部大制作电影,帧数才会达到 48 或者 60。那么,为什么电影 24 帧就很流畅,而我们玩电脑游戏就要 60 帧起步才算流畅呢?
525 0
|
图形学
Unity3D——第一人称FPS生存游戏(resident zombies)
Unity3D——第一人称FPS生存游戏(resident zombies)
|
8月前
|
图形学
【unity小技巧】FPS简单的射击换挡瞄准动画控制
【unity小技巧】FPS简单的射击换挡瞄准动画控制
65 0
|
存储 Web App开发
视频编辑,4k播放,3D游戏, 阿里云图形工作站,了解一下?
设计师小哥哥,小姐姐们,还在用MacBook Pro做视频编辑? 还在一直为长时间的图形渲染占据电脑资源而无休止的等待?还在为大量的素材文件拷贝共享而犯愁? 爱玩游戏的兄弟姐妹们,还在打开电器商城在精挑细选一款适合玩游戏的笔记本? 现在,您无须在本地做视频编辑而担心效率。
2552 0

热门文章

最新文章