love2d教程25 字元流水燈

2021-09-08 09:26:23 字數 2512 閱讀 9371

要想實現字元流水燈,先要實現中文字串擷取,因為在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檔案。

--

字串轉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

")

下面說一下如何使用,把上面的**放到scite裡,zhstr函式有兩個引數

第乙個是待轉換字串,支援中英文混排,第二個是生成表後的表名。

由於採用的是附加模式讀寫檔案,建議把你要的轉換的資訊都放在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其實是支援中文的,只需要...