为了突出本节的主题,我将一节中的代码进行了删减!通过计算时间差来评估绘制函数用到的时间。
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 RPG游戏引擎
本文依照论文的格式编写,分析开发一个J2ME手机游戏引擎所需要的技术,开发价值等。 目录如下: 摘 要 I Abstract II 第1章 绪论 1 1.1 开发的目的和意义 1 1.2 与课题相关的国内外研究综述 1 1.3 本文的主要工作...
j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎j2me游戏引擎
J2ME游戏开发中的地图设计与绘制,解析了用J2ME开发游戏时所需的地图的具体设计与绘制方法
J2ME游戏开发 J2ME游戏开发 J2ME游戏开发
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解j2ME游戏开发详解
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发
j2me游戏2D引擎,强大的编辑器及例子程序。
我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我的第一个j2me游戏代码我...
J2ME游戏开发实例讲解J2ME游戏开发实例讲解J2ME游戏开发实例讲解
J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码J2ME小游戏迷宫源码
J2ME斜45度游戏引擎
J2ME斜45度引擎J2ME斜45度引擎J2ME斜45度引擎J2ME斜45度引擎J2ME斜45度引擎J2ME斜45度引擎
该游戏采用了J2ME的游戏框架,使用了J2ME的游戏引擎,实现了游戏的基本功能,包括游戏场景的切换、游戏角色的控制、游戏物品的收集、游戏敌人的攻击等。 游戏设计了5个游戏场景,分别是森林场景、海洋场景、城堡场景、...
J2ME游戏开发(第一版) J2ME游戏开发(第一版) J2ME游戏开发(第一版)