转自:http://www.himigame.com/lua-game/1282.html
上一篇中,向童鞋们介绍了如何自定义类binding到Lua中供给使用的教程,那么本篇将介绍利用OOP思想在在Lua中进行创建一个自定义类。
首先Himi来向大家讲解如何在Lua中不binding来自定义lua类,其实这种方式在Cocos2dx的Lua Samples已经为我们做好了例子,就看童鞋们是否认真阅读了。此示例路径在你解压cocos2dx引擎包下的cocos2d-2.1rc0-x-2.1.2/samples/Lua/TestLua 中的touchesTest ,如下图:
在这个示例中Ball.lua 与 Paddle.lua 分别作为对象进行的Lua编写,还没有看到过的童鞋请自行看下吧。
闲言少叙,下面详细介绍使用Lua来自定义lua类的步骤:
第一步:
我们到Cocos2dx引擎目录下的samples/Lua/TestLua/Resources/luaScript 下找到“extern.lua” 文件,其内容如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
-
-
Create an
class
.
function
(classname,
super
)
local superType
=
type
(
)
local
cls
if
superType ~
=
"function"
and
"table"
then
superType
=
nil
super
nil
end
=
or
and
.__ctype
=
1
) then
inherited
from
native C
+
+
Object
cls
{}
then
.__create
.__create
.
super
else
super
end
.ctor
function() end
.__cname
classname
1
function
.new(...)
local instance
=
.__create(...)
from
to native
object
instance.
class
cls
instance:ctor(...)
return
instance
end
else
Lua
Object
if
then
clone(
)
super
else
{ctor
function() end}
end
classname
2
lua
.__index
cls
.new(...)
setMetatable({},
)
cls
instance:ctor(...)
instance
end
end
return
cls
end
function schedule(node,callback,delay)
local delay
CCDelayTime:create(delay)
local callfunc
CCCallFunc:create(callback)
local sequence
CCSequence:createWithTwoActions(delay,callfunc)
local action
CCRepeatForever:create(sequence)
node:runAction(action)
action
end
function performWithDelay(node,delay)
CCDelayTime:create(delay)
CCCallFunc:create(callback)
ottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.8em!important; outline:0px!important; overflow:visible!important; padding:0px 1em!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-size:12px!important; min-height:inherit!important; background:none rgb(244,callfunc)
node:runAction(sequence)
sequence
end
|
这个Lua中提供了3个方法:第二个函数与第三个函数分别是更新函数与序列动作函数,很easy 不多说。
class(classname,super),此函数可以用于创建我们自定义lua类
至于其中的实现,大家需要掌握Lua的语言与程序设计,比较容易理解的。
第二步:我们自定义一个精灵类,且继承CCSprite,其文件名Himi这里随便起的是“MySprite.lua” ,如下:
require
"extern"
导入模板,作用调用其
函数
MySprite
(
"MySprite"
,
function(fileName)
CCSprite:create(fileName)
end
)
MySprite.__index
用于访问
local mySprite
MySprite.new(fileName)
mySprite:myInit(_type)
mySprite
end
function MySprite:myInit(_type)
自定义函数
self
_type
比较简单不赘述。
上文来自:http://www.cnblogs.com/sanjin/p/3578518.html 相关文章 本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1. 来源 QuickV3sample项目中的2048样例游戏,以及最近《...
Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...
|