`
鸟哥哥
  • 浏览: 95986 次
  • 性别: Icon_minigender_1
  • 来自: 梅州兴宁
社区版块
存档分类
最新评论

j2me,drawString

阅读更多

画String时,没有做过移植的,仅仅在模拟器上测试的同学们,可能都会发现,画的String怎么老是不固定。对的,不同机器,不同模拟器,不同font大小都不一样。画String似乎让人很迷茫了,难道每个机型都自己一套代码?呵呵,下面提提j2me游戏中的通常做法吧。

自己做点阵字库我们不提。当然这是个解决方案,据说gameloft是这样搞的,好多游戏公司也是这样搞的。这里不多介绍了。

一般做法,会设置一个font:

public static Font smallFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);

在paint方法里g.setFont(smallFont)设置进去。为什么是smallFont,不是lagreFont?它们都行的,只是想提高速度,提高一个屏幕容纳字的数量。 放心吧,手机里的小号字体,人眼肯定可以看清楚的。font在手机里,大小font是可以的,其他型号的字体支持得不好,想想吧,手机才多大内存啊?把什么字体都放进去,手机还能玩不?

在画String前,graphics.drawString可以确定起始画点坐标x,y。而font.stringWidth(String str) 则可以确定stri将画出多少个像素宽。font.getHeight()可以得到多少像素高。 这样画之前就要先定好位置,同时注意anchor.

大屏中屏的测试真机经验告诉我,这些机子一行smallFont能放得下最多11个中文,12个有些机器就可能不够放了。假设有很长的String呢?比如rpg的对话,或者游戏背景介绍等很多字符的String。这些String里会有一些是英文,一些数字,一些中文等。怎么办?网上据说有这种函数。传一个font,一个String,一个指定的高度,长度方框内。会返回一个String[],然后你只要根据String[]一行行画出来就成了。我这里也没去找这样了函数,也没必要。把String打成char[], charAt(i)也成,font.charWidth(ch c)告诉我们,自己可以搞定。根据font.getHeight(),font.charWidth(ch c),自己就可以写像这样的函数了。控制到每个字符,遇到\n还可按回车处理,等等

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics