Open Nav

基于Android平台的星际射击游戏的设计与实现(7)

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.仅供学习参考之用.
   帮助中心
资料介绍:

            }else if(msg.what == -1){
                playerbgstate = -1;
                playerbg.pause();
            }else if(msg.what == 2){
                playerbomstate =2;
                playerbom.start();
            }
        }  
};
5.2.2 游戏主界面类
游戏中的各种动画,各种特效都是在主界面类中实现,主界面类MyView.Java提供画布Canvas,游戏属性类获得Canvas,然后在各自的updateView方法中更新视图以达到图片动态变化的效果。在主界面中,实现Runnable接口,重写Run()方法,作为游戏的主线程,代码如下:
public void run() {
        while (isRun) {

[资料来源:Doc163.com]


            if(!ispause){
                long startTime = System.currentTimeMillis();
                int TIME_IN_FRAME = 30;
                doSomeThing();           
                synchronized (sHolder) {       
                    //拿到当前画布 然后锁定
                    Canvas mCanvas =sHolder.lockCanvas(null); 
                    updataView(mCanvas);
                    //绘制结束后解锁显示在屏幕上 [资料来源:Doc163.com]
                    sHolder.unlockCanvasAndPost(mCanvas);
                }
                //取得更新游戏结束的时间
                long endTime = System.currentTimeMillis();
                //计算出游戏一次更新的毫秒数
                int diffTime  = (int)(endTime - startTime);
                if(TIME_IN_FRAME-diffTime>0)
                try {
                    Thread.sleep(TIME_IN_FRAME-diffTime);

[资料来源:http://Doc163.com]


                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                timer++;
            }
在主界面类MyView.Java中还对整个游戏所需要的图片资源进行初始化,以方便各个属性类去实例化属性对象,避免了各个属性类因多次实例化对象而重复加载图片,耗费内存和暂用cpu资源等问题。   
部分代码如下:
public void InitView(){   
    pengzhuang[0]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.baozha));   
planeBitmap[0]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.enemy2));            paodanBitmap[0]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.bullet1));        paodanBitmap[1]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.bullet4)); [资料来源:http://doc163.com]
    paodanBitmap[2]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.bullet6));
paodanBitmap[3]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.bullet7));
paodanBitmap[4]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.bullet0));
paodanBitmap[5]=BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.myzd31));   
    }
在MyView.Java中关键是对各个属性类的逻辑处理,在LogicView()函数中,需要对飞机、子弹、道具,Boss等进行边界判断,碰撞判断等逻辑判断,对超出屏幕范围的子弹、飞机,道具等属性对象进行置空来释放内存。飞机和碰撞的特效的逻辑处理实现代码如下:
  • 关于资料
    提供的资料属本站所有,真实可靠,确保下载的内容与网页资料介绍一致.
  • 如何下载
    提供下载链接或发送至您的邮箱,资料可重复发送,若未收到请联系客服.
  • 疑难帮助
    下载后提供一定的帮助,收到资料后若有疑难问题,可联系客服提供帮助.
  • 关于服务
    确保下载的资料和介绍一致,如核实与资料介绍不符,可申请售后.
  • 资料仅供参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正! 版权所有,严禁转载
    doc163.com Copyright © 2012-2024 苏ICP备2021029856号-4