`
micheal19840929
  • 浏览: 163256 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[2D]J2ME高速游戏地图绘制经验

    博客分类:
  • J2ME
阅读更多

在缓冲区绘制地图时,如果基于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缓冲处理方式

 

转自:http://www.j2megame.org/index.php/content/view/1888/125.html

分享到:
评论

相关推荐

    J2ME游戏开发中的地图设计与绘制.doc

    在J2ME游戏开发中,地图的设计与绘制是至关重要的环节,它涉及到游戏世界的构建、玩家的导航以及游戏性能的优化。本文将深入探讨如何在Java Micro Edition (J2ME)环境中有效地创建和呈现游戏地图。 首先,地图系统...

    j2me2D游戏框架

    "j2me2D游戏框架"是专门为J2ME平台设计的一套工具集,帮助开发者更高效地构建2D游戏。 在J2ME中,2D游戏框架通常包括以下几个关键组成部分: 1. **图形渲染**:这是框架的基础,用于在设备屏幕上绘制和更新2D图形...

    J2ME 2D小游戏入门之旅.rar_j2me_j2me小游戏_java 2d_小游戏_小游戏 java

    在这个“J2ME 2D小游戏入门之旅”资料中,你将深入学习如何使用J2ME开发2D游戏。J2ME以其轻量级和跨平台的特性,成为移动设备上开发游戏的常见选择。 一、J2ME基础知识 1. **架构**:J2ME由配置和Profile组成。配置...

    j2me游戏引擎详解

    1. **图形渲染**:J2ME游戏引擎通常包含一个图形渲染系统,用于处理2D和3D图形。它们利用低级API如MIDP(Mobile Information Device Profile)的Canvas类来实现高效绘制,确保游戏在不同设备上流畅运行。 2. **物理...

    J2me 地图编辑器

    **J2ME地图编辑器**是手机游戏开发中一个重要的工具,主要用于创建和编辑游戏中的地图场景。在Java 2 Micro Edition(J2ME)平台上,由于资源限制和硬件性能的差异,游戏开发者需要找到高效且灵活的方式来设计适应...

    J2me剑神游戏源代码.rar

    5. **图形渲染**:J2ME使用`Graphics`类进行图形绘制,包括基本的2D图形、颜色填充、文本显示等。通过源码,我们可以学习到如何高效地绘制游戏场景。 6. **事件处理**:J2ME的用户交互主要通过`KeyListener`或`...

    j2me游戏开发实例

    2. **Chap12、Chap17、...**:这些章节名称可能对应着书籍中的各个章节,每个章节可能涵盖不同的游戏开发主题,如2D图形绘制、动画处理、碰撞检测、游戏逻辑设计等。例如,Chapter 12可能讨论的是游戏控制和用户交互...

    J2ME手机游戏

    **J2ME手机游戏开发详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,...虽然现代智能手机主要使用更强大的平台如Unity、Cocos2d-x等开发游戏,但了解J2ME仍有助于理解早期移动游戏的开发历史和技术基础。

    J2ME RPG游戏解析

    在本文中,我们将深入探讨如何使用Java 2 Micro Edition (J2ME) 技术来开发角色扮演游戏(RPG)游戏。J2ME是Java平台的一个子集,专门设计用于移动设备和嵌入式系统,使得开发者能够在这些平台上创建丰富的交互式...

    《J2ME手机游戏开发技术详解》

    这本书深入浅出地介绍了J2ME游戏开发的核心概念和技术,对于初学者和有经验的开发者来说都是宝贵的资源。 首先,书中会讲解J2ME的基础知识,包括MIDP(Mobile Information Device Profile)和CLDC(Connected ...

    J2ME游戏开发中的WTK游戏框架

    1. **图形库**:提供高级的2D图形功能,如精灵动画、位图操作和图形绘制,以增强游戏视觉效果。 2. **音频管理**:处理游戏中的音效和背景音乐播放,确保在不同设备上都能正常运行。 3. **输入处理**:抽象化设备...

    j2me手机游戏源码

    2. **图形编程**:学习如何使用低级图形API(如Canvas)来创建2D图形,绘制赛道、车辆和其他游戏元素。 3. **动画和物理模拟**:研究赛车如何移动、转弯、碰撞以及物理反应的实现。 4. **用户输入处理**:查看如何...

    J2ME游戏开发教程 pdf文件

    J2ME提供了基本的2D图形API,如`Graphics`类,用于绘制线条、形状和文本。对于图像,可以使用`Image`类加载和显示位图。音频方面,`Player`类可用于播放声音效果,但可能需要预先处理音频文件以适应不同的设备。 **...

    J2ME游戏开发(中文译本)

    2. **图形和用户界面**:详细介绍如何使用J2ME的Graphics类进行2D图形绘制,包括线条、形状、颜色填充以及图像的加载和显示。同时,还会讨论如何创建和管理用户界面组件,如按钮、文本框等。 3. **事件处理**:探讨...

    J2ME手机游戏50列

    游戏开发中,J2ME利用了MIDP的Canvas类作为图形绘制的基础,开发者可以通过自定义Canvas类来实现游戏的图形界面和逻辑。同时,J2ME还支持事件驱动编程,允许游戏对用户的输入做出响应。例如,玩家可以通过键盘或触摸...

    J2ME手机游戏贪吃蛇小游戏

    3. **图形绘制**:J2ME使用`Graphics`类进行基本的2D绘图。在贪吃蛇游戏中,我们首先需要创建一个画布,然后在每个帧中清除屏幕,重新绘制背景、蛇、食物和其他元素。这涉及到坐标系统理解、颜色设置以及几何形状的...

    java j2me的游戏引擎

    1. **图形渲染**:引擎会提供2D图形库,用于绘制游戏场景,可能支持精灵动画、纹理映射、碰撞检测等。例如,"Animation"文件可能包含与游戏动画相关的代码或资源。 2. **音频管理**:处理背景音乐和音效的播放,...

    J2ME手机游戏程序设计

    J2ME支持基本的2D图形绘制,但没有内置的3D支持。开发者可以通过第三方库如LWUIT或M3G扩展图形能力。音频方面,可使用MIDP的Sound和Player类播放音频文件。 10. **性能优化** J2ME设备的资源有限,因此游戏代码...

    15个j2me手机游戏项目源代码

    这个压缩包包含的是15个经典的J2ME手机游戏项目的源代码,是学习和理解移动游戏开发的宝贵资源。 一、J2ME基础知识 J2ME由几个关键组件组成,包括MIDP(Mobile Information Device Profile)和CLDC(Connected ...

    j2me 中的几个小游戏(源码)

    在这个J2ME版本中,我们可以研究如何构建游戏地图,处理游戏循环,以及实现简单的AI(人工智能)来模拟鬼魂的行为。 3. **俄罗斯方块Tetris** 俄罗斯方块是一款经典的益智游戏,其J2ME实现涉及到了游戏规则的编程...

Global site tag (gtag.js) - Google Analytics