• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Joanna Qian
Stay Hungry, Stay Foolish!
博客园    首页    新随笔    联系   管理    订阅  订阅
雷电android game学习笔记(1)

一、 基本框架

图层对象(layer Object):定义图层的宽、高、位置、图层的移动和绘制的方法

视图对象:绘制图层对象,响应键盘事件,处理视图线程

Activity:控制游戏流程,如启动游戏、暂停游戏、停止游戏

 

二、 移植Java ME的游戏API到Android

使用Java ME中MIDP2.0的游戏API中的layer, Sprite, LayerManaer和TiledLayer类

(一)MIDP(Mobile Information Device Profile)的介绍

特点:

   游戏场景看成一个整体,由各种图层组成

   图层可以相互运动

   可以简单的检测图层之间的碰撞和交互

   在底层的图像类(Graphics和Image等)之上,高层的Game API能联结各种图像的简单操作

包:Javax.microedition.lcdui.game

┣ GameCanvas

└ Layer

     ┣ LayerManager

     ┣ Sprite

     └ TiledLayer

 

ª       GameCanvas类:游戏的容器

          继承GameCanvas,构造方法传入一个boolean值,决定是否抑制按键事件(大部分情况下)

          获取Graphics对象绘制屏幕:GetGraphics()

          绘制缓冲屏幕:flushGraphics()

          获取键盘状态:getKeyStates()

   Layer类:抽象类,代表游戏中一个可视化元素及其相关属性,如位置、大小、可视与否。。。

   LayerManager类:用于管理游戏中的层次,通过分层次的自动绘制实现期望的图像显示效果,容许开发者设置一个可视窗口

   Sprite类: 表示一帧或多帧的连续图像(由一个Image对象提供,大小相同),通过控制帧的显示实现动画效果,提供旋转模式和碰撞检测方法

   TiledLayer类:显示游戏地图,通过“拼图”的过程,创建大幅图像,如划分为多个cell,分别显示一个Image对象提供的一组图元的某一Tile

 

(二)MIDP移植到android

  1. 图层类(Layer class)的移植

1)      MIDP2.0源码中的Game包的layer, Sprite, LayerManaer和TiledLayer类

2)      将Layer类中的paint方法参数Graphics中的Canvas

3)      在Layer类中加一个绘制图片的方法drawBitmap()

  1. 动画图层类(Sprite class)的移植

该类可以显示几帧动画中的其中一帧,该提供了图片转换盒图层碰撞检测的方法

1)      将Sprite类中的Graphics和Images类改为Canvas和Bitmap类

2)      修改Paint方法,将g.drawRegion方法替换为父类Layer方法中的drawBitmap方法

3)      将doPixelCollision( )中的Bitmap1.getRGB( ), BitMap2.getRGB( )方法注释掉

  1. TiledLayer类的移植

按行列单元格的方式来显示图片

1)      将TiledLayer类中的Graphics和Images类改为Canvas和Bitmaplei

2)      修改Paint方法,将g.drawRegion方法替换为父类Layer方法中的drawBitmap方法

  1. LayerManager类的移植

管理图层,能将多个Layer对象添加,机制维护和显示

1)      将TiledLayer类中的Graphics和Images类改为Canvas和Bitmaplei

2)      修改Paint方法,注释以下代码

Int clipX=g.getClipX( );

Int clipY=g.getClipY( );

Int clipW=g.getClipW( );

Int clipH=g.getClipH( );

g.setClip(ClipX,ClipY,ClipW,ClipH);

3)      在for中添加代码如下

c.restore( );

c.translate(-x+viewX, -y+viewY);

posted on 2012-08-21 10:56  Joanna Qian  阅读(445)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3