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还可按回车处理,等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值