首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> 专家专栏 >> 禹俊 >> J2ME >> 文章正文
处理文字的换行
作者:禹俊    文章来源:本站原创    更新时间:2005-9-27 12:16:31

        在游戏中,尤其是情景类的游戏当中,往往需要大量情节介绍的文字。要在小小的手机屏幕上显示这些文字,就必须对这些文字进行处理,使其能正确的换行,显示在你想要显示的宽度的范围内。下面我就会详细的介绍如何处理文字的换行。

          首先应该计算需要换行的位置。这里我们以文字需要显示的宽度linewd,和“\n”为换行的标志

        static public int ChangLine(String str, Font font, int linewd, boolean fullword)
{ // 计算需要换行的位置  str:需要显示的文字   font:文字的字体  linewd:需要显示的宽度 
  
  int len = 0, wd = 0;
      
 for (int i = 0; i < str.length(); i++)  
             {
 
                  if (str.charAt(i) == '\n')
                   
{
                      
 if (i == 0)
                         
return len + 1;
                       
else
                         
return len + 2;
                     
}
                
 wd += font.charWidth(str.charAt(i));
                 
 if (wd > linewd)
                  
 {
                       
if (fullword)
                       
{
                            
for (int j = len; j >= 0; j--)
                               
{
                                   
 if (str.charAt(j) < 0x30 || str.charAt(j) >= 128)
                                     
{
                                         
len = j;
                                          
 break;
                                     
}
                              
}
                       
}
                      
 return len + 1;
                  
}
             
len = i;
       
}
          
return 0;
}

      计算好位置后,就开始为文字分行。

 static public void DoLine(String infostr, int len)

    { // 为字符串分行,以便于显示
    
String tmpStr;
         
Vector InfoLines = null;
         
InfoLines = new Vector();
          
int tmpint;  //需要换行的位置
     
while (true)
         
{
              
 tmpint = ChangLine(infostr, DefaultFont, len, false);
               
if (tmpint == 0)
               
{
                     
InfoLines.addElement(infostr);
                     
break;
               
}
                
else
              
{
                  
 if (infostr.charAt(tmpint - 1) == '\n')
                       
 tmpStr = infostr.substring(0, tmpint - 1);
                   
else
                        
tmpStr = infostr.substring(0, tmpint);

                InfoLines.addElement(tmpStr);
               
infostr = infostr.substring(tmpint, infostr.length());

            }
       
}
}

以上就是处理文字分行的代码。接下来我讲介绍程序中制作文字的滚屏效果。请关注后续文章。

相关文章:
使用开发者平台为S90系列手机开发移动应用程序
Graphics(3)
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号