下面是我個人在學習lua時的一些筆記分享給大家,希望可以找到一併學習lua的小夥伴。
接下來就是筆記部分了:
1. lua的變數,注釋,語句塊
(1)數字型別
(2)字串型別
(3)thread型別
(4)function型別
(5)table型別
(6)其他型別
不加 local 關鍵字的變數或function都是global訪問型別
2. 關係運算and,or,no在lua中的所表達的特殊含義
—lua中只有 false 和 nil 才表示為假
—and 如果第乙個需要我們計算運算元是假的話,那麼我就返回第乙個運算元,反之就返回第二個運算元
eg:print(1 and 2)
print(false and 2)
pring (true and false)
—or 如果第乙個需要我們計算運算元是真的話,我就返回第乙個值,反之就返回第二個值
eg:print( 1 or 2)
print(nil or 1)
print(false or 2)
----not 永遠返回的只有true 和false
eg:print(not nil)
print(not 1)
print(not 2)
print(not false)
3. lua迭代器:(pars(t)&ipars(t))
tip:lua中的遍歷陣列下標從1開始
不同之處:
pairs可以遍歷表中的所有的key,可以返回空值nil。
eg:for i,v in paies(tabel)… do
ipars只能遍歷到表**現的第乙個不是整數的key,不能返回空值nil,只能返回數字0.
eg:for i,v in ipairs(tabel) …do
4.使用nil可以清楚表中元素的值
eg:a={}
a.b=1
a.c=2
a.b=nil清除a表的b元素
5.獲取lua表的長度使用#tabel。
1)型別轉換,tostring()&tonumber()
eg:local a=tostring(123)
print(a,type(a))
local a=tonumber(「123」)
print(a,type(a))
2)下面的經常被使用(字串格式轉換)
local a= string.format(「hi%d」,2)
print(a)
6.踩坑:lua的點和冒號的區別:
乙個點用來定義和取得乙個變數,這個變數可能是個函式
兩個點用來定義和呼叫乙個函式,兩個點會自動傳入「呼叫者」這個table自身。
先發這麼多吧,有時間後面再補充。
7,lua異常處理函式:(內建斷言assert()方法)
lua內建中提供了異常處理函式assert(a,b)a是要檢查是否有錯誤的乙個引數,b是a錯誤時丟擲的資訊。第二個引數b是可選的,根據自己的需要來修改。簡單講就是輸出錯誤資訊的函式,作用和debug類似。
assert首先判斷第乙個引數是否返回錯誤,如果不返回錯誤,則assert簡單返回,否則則以第二個引數丟擲異常資訊。
8.cocos2d-x 3.0 lua中的定時器
定時器重新整理 schedule
**在c++中,定時器參見:**
在lua中,有兩種方式:
(1)self:scheduleupdatewithprioritylua(update, priority)
> 引數一:重新整理函式
> 引數二:重新整理優先順序
其中 self 為 node類 的子類。
該方法預設為每幀都重新整理一次,無法自定義重新整理時間間隔。
(2)scheduler:schedulescriptfunc(update, inteval, false)
> 引數一:重新整理函式
> 引數二:每次重新整理的時間間隔
> 引數三:是否只執行一次。false為無限次。
其中 scheduler 為定時器管理:cc.director:getinstance():getscheduler()
9.cocos2dx+lua節點渲染順序
cocos2dx+lua節點渲染順序在新增sprit精靈時使用的是預設的場景圖層渲染 localzorder ,globalzorder是用於 渲染器 中用來給「繪製命令」排序的其渲染優先順序要高於localzorder。 globalzorder值越小越先被渲染,但是顯示在後被渲染的下面。 .
總結:節點的渲染順序跟節點的三個成員變數有關(_localzorder、_globalzorder、_orderofarrival)分別對應三個設定函式setlocalzorder、setglobalzorder、setorderofarrival。無論是_localzorder、_globalzorder、_orderofarrival都是越大的越後渲染,越小的越先渲染,而且有_globalzorder的優先順序大於_localzorder的優先順序大於_orderofarrival的優先順序。
lua取table函式rawget(table,index)不受元表的影響,根據引數table、index獲取真正的值table[index],也就不會呼叫到元表,其中table必須是乙個表,引數index可以是任意值。
10.lua中父類與子類之間的ctor初始化函式的聯絡
self.super:ctor(…)-------引數是:self.super,即base
self.super.ctor(self,…)----引數是:self、即子類
Lua學習筆記 lua堆疊
首先了解一下c 與lua之間的通訊 假設在乙個lua檔案中有如下定義 hello.lua檔案 請注意紅色數字,代表通訊順序 1 c 想獲取lua的myname字串的值,所以它把myname放到lua堆疊 棧頂 以便lua能看到 2 lua從堆疊 棧頂 中獲取myname,此時棧頂再次變為空 3 lu...
lua學習筆記
近日時間比較充裕,學習一下lua語言,順便寫下筆記,方便以後加深學習。c c 呼叫lua動態庫及標頭檔案位址 用於c c 嵌入lua指令碼解析 也可以到或找適合自己的版本。一 hello world 哈哈,先使用經典的hello world帶進門 1.在 執行 鍵入cmd開啟dos視窗,並將當前目錄...
Lua 學習筆記
1 關於table lua 中的 table 是python 中的 list 和 dict 的混合體。t 相當於 t 簡單的看,實際上完全相當於 python 中的 dict 不過實際對於鍵為整數的,是放在 list 中的,方便快速索引。當然基於節省記憶體的考量,對於跳躍的大整數鍵,依然是放在 di...