【转】J2ME高速游戏地图绘制经验
来源:互联网 发布:linux下删除非空目录 编辑:程序博客网 时间:2024/06/10 06:13
在缓冲区绘制地图时,如果基于tile变换地图速度太快,FPS不好控制,可以先绘制比屏幕大小高和宽一个相素,缓冲区反转屏幕时,屏幕由相素坐标控制地图显示,其实就是多出那个一个tile的相素变换,由屏幕外逐渐绘制到屏幕内,可以在屏幕绘制时采取记数器,但是记数器的边界一定要设置正确,否则地图会斗(犯过这样的毛病,特别注意),等技术器到达边界再更新缓冲区。
因为缓冲区不必每真都绘制,它里面是根据tile绘制的,可以每次更新一行,也可以每次更新几行。也可以先把地图整个绘制在缓冲区,然后屏幕绘制操作相素,但是这样比较浪费内存,不过只绘制一次缓冲区 看情况使用。
public void drawMap(Graphics g) { if (!isInit) { initMap(tileFileName); } Index = startmapIndex; if (pixCount == 0) { //查看缓冲区是否需要更新 for (int j = 0; j < 9; j++) { //行 for (int i = 0; i < 8; i++) { //列 bg.setClip(mCx, mCy, tileW, tileH); //设置绘制tile区域 //通过地图索引取得tileModX,tileModY getDispMentFromTileset(mapIndex[Index]); System.out.println("mapIndex[" + Index + "]=" + mapIndex[Index]); bg.drawImage(tileImage, mCx - tileModX, mCy - tileModY, bg.TOP | bg.LEFT); mCx += tileW; if (mCx == Def.SCREEN_HEIGHT) { //边界判定 mCx = 0; } if (Index < startmapIndex + 71) { Index++; } else { Index = 0; } } mCy += tileH; if (mCy == Def.SCREEN_HEIGHT + tileH) { //边界判定 mCy = 0; } } if (startmapIndex <= 0) { //判定地图边界,地图象下移动 startmapIndex = 56; // startmapIndex = 9; } else { startmapIndex -= 8; } } System.out.println("startmapIndex=" + startmapIndex); bg.setClip(0, 0, Def.SCREEN_WIDTH, Def.SCREEN_HEIGHT); //恢复全屏设置区域 filpMapBuff(g, screenBuf); } /** *@todo filp内存地图 */int pixCount = 0; //进行几次相素移动int sx = 0;int sy = -16;public void filpMapBuff(Graphics g, Image buff) { if (buff == null) { return; } g.drawImage(buff, sx, sy, g.TOP | g.LEFT); sy += 2; if (sy == 0) { sy = -tileH; } if (pixCount < 7) { pixCount++; } else { pixCount = 0; }}
这段代码是我做一个STG商业代码中截取出来的,比较典型的tile缓冲处理方式
- 【转】J2ME高速游戏地图绘制经验
- J2ME高速游戏地图绘制经验
- J2ME游戏开发中的地图设计与绘制
- J2ME游戏中地图,背景的绘制 --- 图片切割的应用
- 手机游戏地图绘制软件
- 游戏地图的绘制--卡马克算法(转)
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME平台A-RPG游戏地图数据处理
- J2ME游戏API 构建地图TiledLayer
- 解决上海移动企信通的empp.dll的Com组件的问题
- C#如何使用GetTcpTable API获取TCP/IP连接信息
- [转贴]J2ME游戏中的图片处理
- 读取图片文件将其转为二进制,再生成新的图片
- 放假归来
- 【转】J2ME高速游戏地图绘制经验
- 【转】手机游戏短信收费代码文档
- 【转】关于使用调色板进行手机游戏的开发
- 又见鄱阳湖
- java/javascript 通用算出一个月有多少天
- 用C#实现屏幕抓图的ActiveX,附原码。
- 温编译之故 知C语言之新
- SQL语句导入导出大全
- 请放弃 Jruby和Jython 而选择 Groovy