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

J2me 游戏点阵字库引擎(三)之字体绘制改进算法

    博客分类:
  • J2ME
 
阅读更多

根据上节目标  J2ME中的Graphcis类函数是直接操作Screen,是节中算法慢的主要原因。为了提高的它的效率,最好的做法就是只需要一次就可以完成全部汉字的绘制。这样就即可以将函数的量级从o(n)降到o(1),同时可以是平均绘制时间降低下来。现在问题的关键来了,我们如何才能将汉字一次性的绘制出来???

 

既然设计到一次性绘制问题,中间肯定少不了先将其绘制到缓存Image对象中。然后再将其直接绘制到屏幕即可!

 

现在的问题就是如何在这个缓存区中绘制这些汉字??难道我们还是其缓存的Image对象的Graphcis画笔,g.draw*** 将其绘制上去吗??? 要是这样的话我们不就是又回到“原点”??? 这里是决定不能g.draw***方法,将汉字一笔一划的绘制上去!!!

 

现在我们真的需要换一个思路!!!

 

我现在换一种问法, 我们真的没有办法将我们的汉字字形直接映射到Image对象上吗??

 

我们还是先看看J2ME的关于Graphics 类的api文档!! 在其中我找到这个函数!!

 

 

我们可以现将字形映射到数组吗??最后调用这个函数绘制出来吗??

 

当然可以,代码如下!!

 

	void drawFont(Graphics g) {
		g.setColor(0xffffff);
		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,
					0xFFFFFFFF);
		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 curAdd = 0,matIndex = 0;
		int ii, iii, iiii, n;
		int[] rgb = new int[matsize * matsize];

		n = ((matsize - 1) / 8) + 1;
		for (ii = 0; ii < matsize; ii++) {
			// 按照一个字节进行解析
			for (iii = 0; iii < n; iii++) {
				matIndex = n * ii + iii;
				for (iiii = 0; iiii < 8 && iii * 8 + iiii < matsize; iiii++) {
					/* 测试为1的位则显示 */
					if (!((mat[matIndex] & (0x80 >> iiii)) == 0)){
						rgb[curAdd] = color;
						}else{
							rgb[curAdd] = 0x00;
						}
					curAdd++;
				}
			}
		}
		
		drawFontShape(g, rgb, 0, matsize, x, y, matsize, matsize);
	}

	void drawFontShape(Graphics g, int[] rgbData, int offset, int scanlength,
			int x, int y, int width, int height) {
		g.drawRGB(rgbData, offset, scanlength, x, y, width, height, true);
	}

 

 上述代码我重写了代码! 测试截图

 

 

 

调成120个字测试结果

 

 基本上是o(1)量级!!

  • 大小: 18.4 KB
  • 大小: 19.2 KB
  • 大小: 33 KB
分享到:
评论

相关推荐

    j2me点阵字库

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

    j2me游戏引擎详解

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

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

    相比之下,J2ME作为早期的移动平台,其游戏引擎开发相对较少,但仍有大量的老旧设备和低端市场需要支持,因此开发J2ME游戏引擎仍具有一定的市场价值和技术挑战。 2.1 游戏引擎相关技术 2.1.1 编程语言技术要求 ...

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

    在J2ME(Java 2 Micro Edition)平台上开发游戏时,地图的设计与绘制是至关重要的一个环节。J2ME作为一种轻量级的Java平台,广泛应用于移动设备,如早期的智能手机和平板电脑,用于实现各种应用程序,特别是游戏。本...

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

    在本文中,我们将深入探讨"j2me游戏引擎",特别是其强大的编辑器和光照效果在2D游戏开发中的应用。 一、J2ME游戏引擎概述 J2ME游戏引擎是专门针对J2ME平台构建的游戏开发框架,它简化了游戏的编程工作,提供了丰富...

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

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

    J2me 游戏原代码

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

    j2ME游戏开发详解

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

    java j2me的游戏引擎

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

    一款 J2ME 的物理引擎

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

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

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

    J2ME斜45度游戏引擎

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

    j2me游戏开发实例

    **J2ME游戏开发实例详解** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专门用于开发在移动设备和嵌入式设备上的应用程序,包括游戏。本资源包含多个J2ME游戏的源代码,对于学习J2ME游戏开发的初学者来说,...

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

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

    j2me游戏中文教程

    《J2ME游戏开发中文教程》是一本专为Java ME(J2ME)平台上的游戏开发而设计的详细指南。J2ME,全称为Java 2 Micro Edition,是Java技术的一个分支,主要用于移动设备和嵌入式系统的应用程序开发,包括手机、智能...

    J2ME 游戏开发资源

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备上的应用程序开发,尤其是手机游戏。这个压缩包包含的“J2ME游戏开发资源”是一份宝贵的资料库,对于想要学习或从事J2ME游戏...

    j2me游戏开发 经典教程

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

    J2ME游戏源代码

    游戏中的动画通常是通过定时器更新帧并绘制到Canvas上实现的。GIF89a解析库或者自定义的动画系统可以用来播放序列化的帧。 4. **用户交互** J2ME支持键盘、触摸屏和方向键等输入设备。Game API提供了一些基本的...

    J2ME游戏的基本结构

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

Global site tag (gtag.js) - Google Analytics