Cocos2d x學習高階5 函式190429

2021-09-20 05:02:33 字數 1883 閱讀 8789

如下

--------------------------------

function f(a,b)

return a or b ;

endf(3);-- 返回3,而b=nil;

f(3,4);--返回3,4;

returnf ()語句會把 f ()返回的所有返回值都返回,而 return (f())會迫使它只能返回乙個結果。

--------------------------------

print(string.find("字串","目標字串"));--尋找目標字串在字串中的起始位置排位

eg:print(string.find("hello lua users","lua"));--返回的是7和9。如下圖

2. 函式 unpack ();

unpack();會接收乙個陣列作為引數,並從下標1開始返回該陣列元素。

print unpack 10 20 30 – 102030

a b=unpack 10 20 30 – a=10 b=20 30 被丟棄

unpack 經常用於函式引數傳遞。

a= {「hello」,「ll」}

string.find (unpack (a))

定義物件的方法

class={}  -- 乙個物件

function class.func1()

endfunction class:func2()

end

在 lua 中使用「:」定義的函式會自動傳入乙個名為 self 的變數,self 同 c++ 中的 this 一樣,表示當前物件的指標;而「 .」定義的函式沒有 self 。

func1 ()和 func2 ()可以用如下方式等價起來:

function class : func2 end

function class . func1 self end – 傳入乙個 self 作為引數

function add(…)

local s=0

fori i,v in ipairs do

s= s+ v

endreturn s

endprint( add( 1 2 3 4 5 ) ) – 15

參數列中的 3 個點…表示該函式可以接受不同數量的實參。

閉包函式是指將乙個函式寫在另乙個函式之內,這個位於內部的函式可以訪問外部函

數中的區域性變數。

function newcounter()

local i=0

return function()

i= i+1

return i

endend

c1= new counter()

print( c1() )-- 1

print( c1() )-- 2

在這段**中,匿名函式訪問了乙個非區域性的變數 i ,i 用來保持乙個計數器。表面上

看,由於建立變數 i 的函式( newcounter )已經返回,所以之後每次呼叫匿名函式時,

i 均已超出了它的作用域;但是因為匿名函式一直在使用變數 i ,所以 lua 會正確地維護 i 的生命週期。

在匿名函式內部,i 既不是全域性變數,也不是區域性變數,它被稱為外部的區域性變數或upvalue。

以上的總結引用處是均出自cocos2d-x 之 lua 核心程式設計/劉克男著 .— 2 版 . —北京:清華大學出版社,201

Cocos2d x學習筆記1

1.建立新的cocos2d x 3.0 專案 在命令列中輸入 cocos new helloworld 專案名稱 p com.ss.pku 包名字 l cpp 專案型別 d d cocos workspace 專案存放路徑 2.資料夾分析 resource 資料夾 存放資源檔案 include和so...

Cocos2d x學習筆記(7)

1 動作基本概念 ccactiong是動作類的基類,動作作用於ccnode,因此,任何乙個動作都需要ccnode物件來執行。ccaction作為乙個基類,其實質是乙個介面 抽象類 由它派生的實現類才是實際使用的動作。ccaction的絕大多數實現類都派生自ccfinitetimeaction,這個類...

Cocos2d x動作學習筆記

action類如其名,它可以改變node物件的屬性,action物件是隨著時間改變node的屬性。任何乙個以node為基類的物件都有可執行的動作物件。例如,你可以在乙個時間段內將sprite精靈從乙個位置移動到另乙個位置。每個動作都有by和to兩個狀態。為什麼呢?因為它們所執行的結果是不同的。by相...