zoukankan      html  css  js  c++  java
  • 雷电android game学习笔记(1)

    一、 基本框架

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

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

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

     

    二、 移植Java ME的游戏APIAndroid

    使用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);

  • 相关阅读:
    (1)---(10)小结
    Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类
    Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型
    Java网络编程从入门到精通(8):用getAddress方法获得IP地址
    Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
    Java网络编程从入门到精通(6):使用getCanonicalHostName方法获得主机名
    javaEE中各种Context及其相关的总结(servletContext、httpServletRequest、pageContext、ActionContext、servletActionContext)
    子表,父表;一对多,多对一;主键,外键梳理。
    eclipse中js文件的默认编码格式修改。
    Eclipse/MyEclipse一次修改或者编辑多行的快捷键
  • 原文地址:https://www.cnblogs.com/JoannaQ/p/2648691.html
Copyright © 2011-2022 走看看