国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

游戲開發小技巧—低級界面下的文本自動換行

2019-11-18 14:54:11
字體:
來源:轉載
供稿:網友

在應用中,有時候需要顯示大段的文字。如游戲中的幫助信息,以及RPG游戲的人物對白。對于這種大量文字的顯示,我們會很自然地想到使用高級界面的Form來顯示,好處就是簡單方便,我們不用去操心文字的斷行排版,Form會為你搞定一切。
但是,有時候我們無法使用高級界面,如游戲規定必須使用低級界面,再有就是RPG類的游戲也是必須要使用低級界面來顯示對白的。
使用低級界面顯示大段文字,要害在于你要把它給排好版。最直接的問題就是:一行可以顯示幾個字?
很多人這樣做:通過真機(必須用真機,模擬器不行的,會有差異)測量好一行能顯示幾個字,比如說7個。然后把大段的文字分成7個一行,變成了一個字符串數組,如:
final String[] strGameHelp = {
    "年份不詳的一個",
    "時代中,妖與人",
    "類都存在于世界",
    "上,并基本為對",
    "立狀態,但是不",
    "排除有相處一起",
    "的可能,因為人",
    "類基本已經接受",
    "世界上有妖的事",
    "實了。"
};
有了這么一個字符串數組,我們就可以循環把它畫出來:
for(int i=0;i<strGameHelp.length;i++){
  g.drawString(strGameHelp[i],5,5+20*i,Graphics.TOPGraphics.LEFT);
}
上NOKIA、SE、MOTO幾個模擬器一看,恩,不錯,很管用,效果很好。當下把幾個版本呼啦呼啦就全給搞定了。
當你正要端起杯子喝口水的時候,策劃跑了過來
K700的文字怎么出框了
不可能啊,我量好了的,模擬器上看的好好的
不信你看……,策劃掏出了K700
你一看,果然出了框,看起來一行只能顯示6個字。
無奈,你開始挪字,改成:
final String[] strGameHelp = {
    "年份不詳的一",
    "個時代中,妖",
    "與人類都存在",
    "于世界上,并",
    "基本為對立狀",
    "態,但是不排",
    "除有相處一起",
    "的可能,因為",
    "人類基本已經",
    "接受世界上有",
    "妖的事實了。"
};
保存,編譯,打包發給策劃。
但策劃拒絕了文件傳送。
干嗎不收啊,你問。
還要改個東西,加一個字,改成“在年份不詳的……”,策劃告訴你。
你想了想,問策劃:能不能不改?
不能。策劃回答的很快,我也不想加的,某某領導要求的。
你無語。預備再開始挪字……
忽然想:我不能老是改文字呀,萬一下次他跑過來說再加個什么東西怎么辦?
得想個法子搞定它。
于是寫了個函數:
final int CharacterNumber = 6;
public Vector getSubsection(String str){
  Vector vector = new Vector();
  int i=0;
  while(!str.equals(""){
    if(str.length>6){
      vector.addElement(str.substring(0,CharacterNumber));
      str = str.substring(CharacterNumber);
    }
    else{
      vector.addElement(str);
      str = "";
    }
  }
  return vector;
}
再把幫助信息改一改:
final String strGamehelp =
    "在年份不詳的一"+
    "個時代中,妖"+
    "與人類都存在"+
    "于世界上,并"+
    "基本為對立狀"+
    "態,但是不排"+
    "除有相處一起"+
    "的可能,因為"+
    "人類基本已經"+
    "接受世界上有"+
    "妖的事實了。";
最后是畫出來:
Vector vector = getSubsection(strGamehelp);
for(int i=0;i<vector.size();i++){
  g.drawString((String)vector.elementAt(i),5,5+20*i,Graphics.TOPGraphics.LEFT);
}
vector = null;
這下好了,隨便加,怎么加我都不怕,嘿嘿,自動換行。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 子长县| 汉中市| 香港 | 张家川| 峨眉山市| 防城港市| 华亭县| 东阿县| 彩票| 盐津县| 库伦旗| 吴堡县| 新津县| 麻栗坡县| 广东省| 汾西县| 文水县| 浦东新区| 梨树县| 原平市| 北京市| 正宁县| 泗水县| 鄂尔多斯市| 伊宁市| 多伦县| 稻城县| 黔西县| 那曲县| 赣州市| 新蔡县| 新竹县| 红安县| 慈溪市| 宣汉县| 和林格尔县| 英吉沙县| 蒙城县| 福清市| 牡丹江市| 辛集市|