Android游戏开发之构建游戏框架View与SurFaceView的区(2)

首先我们需要创建一张屏幕大小的缓冲图片,我说一下第三个参数 ARGB 分别代表的是 透明度   红色   绿色     蓝色

Bitmap.Config  ARGB_4444              ARGB  分别占四位  
Bitmap.Config  ARGB_8888              ARGB  分别占八位
Bitmap.Config  RGB_565                没有透明度(A)   R占5位   G 占6位   B占5位    

一般情况下我们使用ARGB_8888 因为它的效果是最好了 当然它也是最占内存的。

 

mBufferBitmap = Bitmap.createBitmap(mScreenWidth,mScreenHeight,Config.ARGB_8888);  


创建一个缓冲的画布,将内容绘制在缓冲区mBufferBitmap中

 

Canvas mCanvas = new Canvas();   mCanvas.setBitmap(mBufferBitmap);  


最后一次性的把缓冲区mBufferBitmap绘制在屏幕上,怎么样 简单吧 呵呵。

 

@Override   protected void onDraw(Canvas canvas) {       /**这里先把所有须要绘制的资源绘制到mBufferBitmap上**/       /**绘制地图**/       DrawMap(mCanvas,mPaint,mBitmap);       /**绘制动画**/       RenderAnimation(mCanvas);       /**更新动画**/       UpdateAnimation();                     if(isBorderCollision) {       DrawCollision(mCanvas,"与边界发生碰撞");       }              if(isAcotrCollision) {       DrawCollision(mCanvas,"与实体层发生碰撞");       }       if(isPersonCollision) {       DrawCollision(mCanvas,"与NPC发生碰撞");       }              /**最后通过canvas一次性的把mBufferBitmap绘制到屏幕上**/       canvas.drawBitmap(mBufferBitmap, 0,0, mPaint);       super.onDraw(canvas);   }  


由此可见view属于被动刷新, 因为我们做的任何刷新的操作实际上都是通知UI线程去刷新。所以在做一些不用频繁去刷新绘制的项目可以使用view来操作

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdxsf.html