`
aiquantong
  • 浏览: 112984 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

J2me 游戏点阵字库引擎(二)字体绘制函数分析

    博客分类:
  • J2ME
 
阅读更多

为了突出本节的主题,我将一节中的代码进行了删减!通过计算时间差来评估绘制函数用到的时间。

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;

class FontCanvas extends Canvas {

	public FontCanvas() {
		super();
	}

	protected void paint(Graphics g) {
		g.setColor(0x0);
		g.fillRect(0, 0, this.getWidth(), this.getHeight());
		drawFont(g);
	}

	void drawFont(Graphics g) {
		long time1 = System.currentTimeMillis();
		//64是从游戏引擎的角度,通常在一个屏幕对话中,一般出现的字个数都是在64个左右。
		for (int i = 0; i < 64; i++)
			drawmat(song16, g, 16, 10 + (i % 8) * 16, 20 + (i / 8) * 16, 0xFFFFFF);
		long time2 = System.currentTimeMillis();
		long dtime = (time2 - time1) / 16;
		g.setFont(Font.getDefaultFont());
		g.drawString("平均时间:"+String.valueOf(dtime), 150, 100, 
				Graphics.TOP|Graphics.LEFT);
	}

	void drawmat(char[] mat, Graphics g, int matsize, int x, int y, int color)
	/* 依次:字模指针、点阵大小、起始坐标(x,y)、颜色 */
	{
		int i, j, k, n;
		n = (matsize - 1) / 8 + 1;
		for (j = 0; j < matsize; j++) {
			for (i = 0; i < n; i++) {
				for (k = 0; k < 8; k++) {
					if (!((mat[j * n + i] & (0x80 >> k)) == 0)) /* 测试为1的位则显示 */
					{
						g.setColor(color);
						g.drawLine(x + i * 8 + k, y + j, x + i * 8 + k, y + j);
					}
				}
			}
		}
	}

	char song16[] = {
	/* 以下是 '宋' 的 16点阵宋体 字模,32 byte */
	0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x41, 0x04, 0x81, 0x08, 0x01, 0x00,
			0x7F, 0xFC, 0x03, 0x80, 0x05, 0x80, 0x05, 0x40, 0x09, 0x20, 0x11,
			0x10, 0x21, 0x0E, 0x41, 0x04, 0x01, 0x00, 0x00, 0x00, };
}

 上述代码的运行结果,如下截图:

 

 

分析

  1,上述的平均时间是20ms,64个字就是 20 * 64 = 1280ms。兄弟姐妹超过一秒了!!!! 通常在游戏中,刷新率在60左右是流畅的,现在光字体绘制就需要一分钟,这个在游戏中明显是不行的!

  2,并且这个算法是o(n)量级的,及会随着绘制的字数增长,绘制时间成线性增长。这个在游戏开发中是致命的弱点。

 

目标

 1,设计在o(1)量级的算法。

 2,让平均时间控制在15ms。

 

 

 

 

 

 

  • 大小: 22.9 KB
分享到:
评论

相关推荐

    j2me点阵字库

    点阵字库是J2ME应用中一种特殊的字体资源,尤其对于游戏开发来说,非常重要。这种字库以像素为单位描绘字符形状,适用于低内存和低分辨率的设备。 点阵字库的工作原理是将每个字符以二维数组的形式存储,数组的每个...

    J2ME手机游戏开发引擎的分析与设计

    【J2ME手机游戏引擎开发引擎的分析与设计】 本文主要探讨了J2ME手机游戏引擎的开发,这种引擎能够帮助开发者快速构建J2ME平台上的游戏,通过自定义参数生成游戏框架,使得程序员可以专注于游戏逻辑的实现,提高开发...

    j2me游戏引擎详解

    **J2ME游戏引擎详解** Java 2 Micro Edition(J2ME)是Oracle公司为小型设备和嵌入式系统设计的一种Java平台。它主要用于移动设备,如早期的智能手机和平板电脑,提供运行Java应用程序的能力。在J2ME的环境中,游戏...

    J2ME_Map.rar_J2ME 地图_J2ME游戏_j2me 游戏_j2me_m_绘制地图

    在"J2ME游戏开发中的地图设计与绘制.txt"文件中,可能详细讲解了如何规划地图结构,如何使用二维数组存储地图数据,以及如何利用J2ME的图形API高效地渲染地图。同时,文件可能还讨论了如何实现动态加载和滚动地图,...

    j2me游戏引擎(强大编辑器及光照效果)

    通过研究和分析Desolo,开发者可以更好地理解如何利用J2ME游戏引擎来创建具有强大编辑器和光照效果的2D游戏。 总结来说,J2ME游戏引擎结合其强大的编辑器和光照效果,为2D游戏开发提供了丰富的工具和可能性。通过...

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏下,上为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    j2ME游戏开发详解

    【j2ME游戏开发详解】 Java 2 Micro Edition(j2ME)是Oracle公司推出的用于开发和部署在小型设备、移动设备以及嵌入式系统上的应用程序的平台。它以其轻量级、跨平台的特性,成为了早期手机游戏开发的重要工具。本...

    java j2me的游戏引擎

    Java J2ME游戏引擎是为在Java Micro Edition (J2ME)平台上开发移动游戏而设计的一种软件框架。J2ME是一种轻量级的Java平台,主要用于嵌入式设备,如早期的智能手机和平板电脑,它提供了运行Java应用程序的能力,包括...

    J2ME小游戏J2ME小游戏J2ME小游戏上,下为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    J2ME斜45度游戏引擎

    **J2ME斜45度游戏引擎** J2ME(Java 2 Micro Edition)是Java平台上的一种轻量级开发框架,主要用于移动设备和嵌入式系统的应用程序开发,其中包括游戏。在移动游戏领域,J2ME曾是开发手机游戏的重要工具,尤其是在...

    j2me游戏开发 经典教程

    j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发

    J2ME游戏源代码

    通过分析这些J2ME游戏源代码,你可以学习到如何在有限的硬件条件下创建引人入胜的游戏体验,掌握游戏设计、性能优化以及跨平台开发的技巧。同时,这也能帮助你了解移动游戏开发的历史,因为随着技术的发展,现代移动...

    一款 J2ME 的物理引擎

    **J2ME 物理引擎概述** J2ME(Java Micro Edition)是Java平台的一个子集,主要用于开发在移动设备和嵌入式设备上的应用程序,包括手机游戏。J2ME的轻量级特性使得它在资源有限的设备上运行成为可能。在游戏开发中...

    J2me 游戏原代码

    Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,尤其在早期智能手机和功能手机上广泛应用于游戏开发。"J2ME 游戏原代码" 提供的资源可能是一个包含 J2ME 游戏完整源代码的压缩包,名...

    J2ME游戏的基本结构

    J2ME 游戏的图形渲染通常基于 Graphics 类,它提供了绘制线条、形状、文本和位图的功能。通过更新屏幕并调用 Display.update() 或 repaint() 方法,可以实现游戏画面的动画效果。 六、输入处理 J2ME 提供了键盘和...

    J2ME 游戏开发资源

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备上...通过分析和修改这些代码,你可以加深对J2ME游戏开发的理解,提升自己的技能。同时,这也是一个积累经验、解决问题的好途径。

    经典j2me游戏实例

    本篇将通过分析提供的文件名来探讨J2ME游戏开发的基础知识。 1. **NewGame.java** `NewGame` 文件很可能是游戏的主类,通常包含游戏的初始化逻辑,如创建游戏场景、设置游戏规则、加载资源等。在J2ME中,游戏通常...

    j2me游戏开发及其源码.rar_J2ME游戏_j2me_j2me game source_j2me 游戏_j2me游戏开发

    这个压缩包文件"j2me游戏开发及其源码.rar"包含了关于J2ME游戏开发的详细资料,非常适合初学者学习和探索。 在J2ME游戏开发中,你需要了解以下几个核心知识点: 1. **基础环境配置**:首先,开发者需要安装Java ...

Global site tag (gtag.js) - Google Analytics