Cocos 2 d-Lauのオブジェクト向け
2376 ワード
Luaにはもともとオブジェクト向けの特性はなく、tolua++はサードパーティ製のパッケージであり、Luaにオブジェクト向けの特性を提供することができ、Luaを使用してc++言語ライブラリを使用したスクリプトファイルを作成することができる.
パッヶージ
Userを定義します.luaファイル
別のLuaファイルで呼び出す
もしUser.luaファイルのsetIdメソッドとgetIdメソッドを別の方法に置き換えると、上記の出力結果は:1このときuser:getId=225となる.しかし、この方法ではuser.は使用できません.setId方式付与とuser.getIdは値を取ります.そうしないと、エラーが発生します.例えばuser.setIdメソッドでは、パラメータがselfとidを伝達することを示し、自分のメンバー関数を呼び出して使用する.アクセス時にselfは無効で、静止関数を呼び出すことに相当します.
継承(単一継承)
teacheクラスが定義されている場合は、Userクラスから継承されます.
マルチステート
Luaは弱いポインタ言語であるため,多態特性はない.
パッヶージ
Userを定義します.luaファイル
-- , , , 。
local User = class("User")
--
User.id = 1
User.name = " "
User.age = 20
-- , Lua , ctor() 。 ctor()
function User:ctor()
print("User ")
end
--
function User:ctor(name)
User.name = name
print(" ")
end
-- User , ;
function fun()
end
-- , +:
function User:fun()
print(" User ")
end
function User:setId(id)
-- self.id --
-- User.id --
User.id = id
end
function User:getId()
return User.id
end
--
return User
別のLuaファイルで呼び出す
-- , classUser , , classUser
local classUser = require("app.scenes.User")
function DingyiFile:ctor()
--
local user = classUser.new()
---------------------------------------------
, :User
---------------------------------------------
local user 1= classUser.new()
print(user.name)
print(user1.name)
---------------------------------------------
, :
User
User
---------------------------------------------
user.name = " "
print(user.name)
print(user1.name)
-- :
end
--
-- 225
user:setId(225)
print(user1:getId())
もしUser.luaファイルのsetIdメソッドとgetIdメソッドを別の方法に置き換えると、上記の出力結果は:1このときuser:getId=225となる.しかし、この方法ではuser.は使用できません.setId方式付与とuser.getIdは値を取ります.そうしないと、エラーが発生します.例えばuser.setIdメソッドでは、パラメータがselfとidを伝達することを示し、自分のメンバー関数を呼び出して使用する.アクセス時にselfは無効で、静止関数を呼び出すことに相当します.
function User:setId(id)
self.id = id
end
function User:getId()
return self.id
end
継承(単一継承)
teacheクラスが定義されている場合は、Userクラスから継承されます.
local User = require("app.scenes.User")
--
local Teacher = class("Teacher",User)
function Teacher : ctor()
--Lua
self.super:ctor() --
print("Teacher ")
end
return Teach
マルチステート
Luaは弱いポインタ言語であるため,多態特性はない.