要想實現字元流水燈,先要實現中文字串擷取,因為在love2d裡含有中文時string.sub失效。
可能學得不好吧,為了實現love2d的中文字串擷取,居然在此耗費了五六個小時。一開始
我想的是通過編寫c/c++擴充套件來實現,於是有了c++擷取漢字和英文混合字串這篇文章。可
是等我生成dll後居然發現是亂碼,以為是自己的**問題,折騰了半天還是沒有結果,後來吃
飯後回來突然想到可能是編碼問題。於是在win的命令列上右鍵檢視屬性是936編碼,可見cmd
是不支援utf-8的,而我的lua編碼是utf-8,於是把lua檔案另存為ansi碼,再執行居然可以了。
當我天真的想這下應該可以擷取中文字串時,寫了乙個love2d的測試程式卻發現還是那個錯誤,
decode error invalid utf8。我想難道是我的工程要設為unicode,於是又改為unicode,還是
如此。後來,冷靜的想了一下,覺得可能不是我的**的問題,在lua裡中文擷取是沒問題的,可是在
love2d裡卻又問題,這是什麼原因呢。lua是用純c實現的,既然如此我呼叫c++/c的字串函式
與在lua裡呼叫lua的字串函式應該是等效的,那我通過c/c++裡的字串函式來擷取中文字串
匯出給lua後,在love2d裡當然還是出錯。那麼自己實現乙個字串函式,開始我也這麼想,可是
後來折騰了一下放棄了。
怎麼辦?還是用我在簡單拼音輸入法里的方法,利用乙個lua檔案把字串轉為tabel存到另乙個
lua檔案裡。後來雖然實現了,可是發現也不好,在linux下用lua zhstr.lua生成的lua是亂碼,在win
下也是如此,不過在scite裡執行後生成的卻是ansi正常編碼的lua檔案。
--下面說一下如何使用,把上面的**放到scite裡,zhstr函式有兩個引數字串轉table,支援中英文混排
--會在當前目錄下生成talk.lua
function
zhstr(str,tname)
local f = io.open("
talk.lua
", "a"
)
local len=#str
f:write(tname,"=
")f:write("\n
")f:close()
endzhstr(
"半山無極
","talk1")
zhstr("你好
","talk2")
zhstr(
"hello world
","talk3
")
第乙個是待轉換字串,支援中英文混排,第二個是生成表後的表名。
由於採用的是附加模式讀寫檔案,建議把你要的轉換的資訊都放在zhstr.lua裡
使用zhstr()函式,每次修改後刪除生成的talks.lua,並在scite裡重新執行,
然後轉換talks.lua為utf-8無bom編碼。
由於我們已經把字串存為了表,實現流水燈就比較簡單了,每隔一段時間
把表裡的字元取出並連線就可以了。
require('talk')
--說明請注意自行修改字型
--滾動文字 t字串表,rate出現時間間隔
function
rolltext(t,rate)
local count=0
local i=1
local str=""
local
function
text()
count=count+love.timer.getdelta()
if count>rate then
count=0
if i<=#t then
str=str.. t[i]
i=i+1
endend
return
str
endreturn
text
endfunction love.load
() font=love.graphics.newfont("
yaheiconsolas.ttf
",48
) love.graphics.setfont(font)
--rolltext是函式型別
2013-4-14修正,love裡string.sub()對中文可以支援,但是居然乙個中文佔3個位元組,即
string.sub("你好",1,3)輸出"你"。太不可思議了,我還是第一次見到三位元組編碼,不知道其
內部如何實現,有知道的大俠請不吝告知。
love2d教程28 血條
感謝朱大仙提供的 這才有了這篇部落格。血條 至於體力 法力都是類似的 是遊戲裡常用的gui控制項,它主要實現兩個功能 增加 減少。效果如圖 沒有錄製gif 血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,同時這個也是乙個quad的序列圖,用它來組成...
love2d教程28 血條
感謝朱大仙提供的 這才有了這篇部落格。血條 至於體力 法力都是類似的 是遊戲裡常用的gui控制項,它主要實現兩個功能 增加 減少。效果如圖 沒有錄製gif 血條的繪製可以使用love裡的一些繪圖函式,還可以用填充。這裡採用bloodlineb.png填充,同時這個也是乙個quad的序列圖,用它來組成...
love2d教程19 揹包
慚愧,在春節裡一篇文章也沒寫,現在又回到學校了,繼續love2d教程。由於我 只是現看現寫,有些地方可能錯了,希望大家指正,我會及時修正。這篇文章主要關 於loveframes的應用,是按朱大仙要求寫的,原文在此。揹包功能是通過loveframe來實現的,loveframes其實是支援中文的,只需要...