Cocos之 从C++过渡到Lua
来源:互联网 发布:名片设计软件哪个好 编辑:程序博客网 时间:2024/05/17 09:36
转自:http://shahdza.blog.51cto.com/2410787/1569003
1
2
3
4
5
//
Sprite* sprite = Sprite::create();
sprite->setPosition(Vec2(100, 100));
this
->addChild(sprite);
//
1
2
3
4
5
//
local
sprite = cc.Sprite:
create
()
sprite:setPosition(cc.p(100, 100))
self:addChild(sprite)
//
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
local
winSize = cc.Director:getInstance():getWinSize()
-- 继承Layer类
MenuLayer = class(
"MenuLayer"
,
function
()
return
cc.Layer:
create
()
end
)
-- 初始化函数
function
MenuLayer:ctor()
self.
name
=
"hello"
-- 成员变量
self.
size
= cc.
size
(0, 0)
-- 成员变量
end
-- 创建包含GameLayer的场景
function
MenuLayer:createScene()
local
scene = cc.Scene:
create
()
local
layer = MenuLayer:
create
()
scene:addChild(layer)
return
scene
end
-- 创建GameLayer层
function
MenuLayer:
create
()
local
layer = MenuLayer.new()
-- new()
layer:init()
-- init()
return
layer
end
-- 初始化
function
MenuLayer:init()
self:ShowUI()
-- 添加界面元素(Sprite、Label等)
self:addBtn()
-- 添加菜单按钮
self:addTouches()
-- 添加多点触摸
end
-- 添加界面
function
MenuLayer:ShowUI()
-- 背景图片Sprite
local
bg = cc.Sprite:
create
(
"HelloWorld.png"
)
bg:setPosition(cc.p(0, 0))
-- 设置位置
bg:setAnchorPoint(0, 0)
-- 设置锚点
self:addChild(bg)
-- 添加子节点
-- 添加文字
self.label = cc.Label:createWithSystemFont(
"debug"
,
"res/fonts/Marker Felt.ttf"
,30)
self.label:setPosition(winSize.width/2, winSize.height/2)
self:addChild(self.label)
end
-- 添加按钮
function
MenuLayer:addBtn()
local
menu
local
normal, hard
-- 回调函数
-- tag 为menuItem设置的标签setTag ,menuItem为相应对象
local
function
menuCallback(tag, menuItem)
print(
"menuItem: "
.. tag)
-- Lua中的输出语句
end
normal = cc.MenuItemImage:
create
(
"normal.png"
,
"normal.png"
)
normal:setPosition(0, 120)
normal:setTag(1)
normal:registerScriptTapHandler(menuCallback)
-- 按钮事件
hard = cc.MenuItemImage:
create
(
"hard.png"
,
"hard.png"
)
hard:setPosition(0, 20)
hard:setTag(2)
hard:registerScriptTapHandler(menuCallback)
-- 按钮事件
-- 创建菜单,最后不需要加NULL
menu = cc.Menu:
create
(normal, hard)
self:addChild(menu)
end
-- 多点触摸
function
MenuLayer:addTouches()
local
touch1, touch2 = cc.Touch, cc.Touch
local
function
onTouchesBegan(touches, event)
print(
"Touches Began"
)
touch1 = touches[1]
-- 第一个触点,下标从1开始
touch2 = touches[2]
-- 第二个触点
local
pos1 = touch1:getLocation()
-- 获取触点1的位置
local
pos2 = touch2:getLocation()
-- 获取触点2的位置
local
delta = {
x = pos2.x - pos1.x ,
y = pos2.y - pos1.y
}
print(delta.x ..
" , "
.. delta.y)
-- 输出log
end
local
function
onTouchesMoved(touches, event)
print(
"Touches Moved"
)
end
local
function
onTouchesEnded(touches, event)
print(
"Touches Ended"
)
end
-- 注册多点触摸
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
local
listener = cc.EventListenerTouchAllAtOnce:
create
()
listener:registerScriptHandler(onTouchesBegan, cc.Handler.EVENT_TOUCHES_BEGAN)
listener:registerScriptHandler(onTouchesMoved, cc.Handler.EVENT_TOUCHES_MOVED)
listener:registerScriptHandler(onTouchesEnded, cc.Handler.EVENT_TOUCHES_ENDED)
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
end
1
2
3
//
sprintf
(str,
"hero_%02d.png"
, i)
//
1
2
3
//
string.format(
"hero_%02d.png"
, i)
//
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//
-- ResolutionPolicy 屏幕适配(就这个比较奇葩。。。)
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1550089
cc.ResolutionPolicy.EXACT_FIT
cc.ResolutionPolicy.FIXED_HEIGHT
cc.ResolutionPolicy.FIXED_WIDTH
cc.ResolutionPolicy.NO_BORDER
cc.ResolutionPolicy.SHOW_ALL
-- EventKeyboard::KeyCode 键盘按键枚举类型(这个也比较奇葩。。。)
-- 含义参见(键盘事件部分):http://shahdza.blog.51cto.com/2410787/1560222
-- 键盘按键比较多,所以就罗列一部分
cc.KeyCode.KEY_A
cc.KeyCode.KEY_1
cc.KeyCode.KEY_F1
cc.KeyCode.KEY_SPACE
cc.KeyCode.KEY_ALT
cc.KeyCode.KEY_SHIFT
-- Control::EventType 控件事件类型
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1543349
cc.CONTROL_EVENTTYPE_TOUCH_DOWN
cc.CONTROL_EVENTTYPE_DRAG_INSIDE
cc.CONTROL_EVENTTYPE_DRAG_OUTSIDE
cc.CONTROL_EVENTTYPE_DRAG_ENTER
cc.CONTROL_EVENTTYPE_DRAG_EXIT
cc.CONTROL_EVENTTYPE_TOUCH_UP_INSIDE
cc.CONTROL_EVENTTYPE_TOUCH_UP_OUTSIDE
cc.CONTROL_EVENTTYPE_TOUCH_CANCEL
cc.CONTROL_EVENTTYPE_VALUE_CHANGED
-- Control::State 控件状态
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1543349
cc.CONTROL_STATE_NORMAL
cc.CONTROL_STATE_DISABLED
cc.CONTROL_STATE_SELECTED
cc.CONTROL_STATE_HIGH_LIGHTED
-- EditBox::EditBoxInputMode 文本框虚拟键盘的编辑类型
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1544213
cc.EDITBOX_INPUT_MODE_ANY
cc.EDITBOX_INPUT_MODE_URL
cc.EDITBOX_INPUT_MODE_DECIMAL
cc.EDITBOX_INPUT_MODE_NUMERIC
cc.EDITBOX_INPUT_MODE_EMAILADDR
cc.EDITBOX_INPUT_MODE_SINGLELINE
cc.EDITBOX_INPUT_MODE_PHONENUMBER
-- EditBox::EditBoxInputFlag 文本框文本类型
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1544213
cc.EDITBOX_INPUT_FLAG_PASSWORD
cc.EDITBOX_INPUT_FLAG_SENSITIVE
cc.EDITBOX_INPUT_FLAG_INITIAL_CAPS_WORD
cc.EDITBOX_INPUT_FLAG_INITIAL_CAPS_SENTENCE
cc.EDITBOX_INPUT_FLAG_INITIAL_CAPS_ALL_CHARACTERS
-- EditBox::KeyboardReturnType 文本框虚拟键盘中return键显示字符
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1544213
cc.KEYBOARD_RETURNTYPE_GO
cc.KEYBOARD_RETURNTYPE_DONE
cc.KEYBOARD_RETURNTYPE_SEND
cc.KEYBOARD_RETURNTYPE_SEARCH
cc.KEYBOARD_RETURNTYPE_DEFAULT
-- ScrollView::Direction 滚动方向
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1544983
cc.SCROLLVIEW_DIRECTION_BOTH
cc.SCROLLVIEW_DIRECTION_VERTICAL
cc.SCROLLVIEW_DIRECTION_HORIZONTAL
-- TableView::VerticalFillOrder 列表视图排列方式
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1545383
cc.TABLEVIEW_FILL_TOPDOWN
cc.TABLEVIEW_FILL_BOTTOMUP
-- ProgressTimer::Type
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1546707
cc.PROGRESS_TIMER_TYPE_BAR
cc.PROGRESS_TIMER_TYPE_RADIAL
-- ParticleSystem::PositionType 粒子位置模式
-- 含义参见:
cc.POSITION_TYPE_FREE
cc.POSITION_TYPE_GROUPED
cc.POSITION_TYPE_RELATIVE
-- ParticleSystem::Mode 粒子发射器类型
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1547636
cc.PARTICLE_MODE_RADIUS
cc.PARTICLE_MODE_GRAVITY
-- TransitionScene::Orientation 场景切换方向
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1547977
cc.TRANSITION_ORIENTATION_UP_OVER
cc.TRANSITION_ORIENTATION_DOWN_OVER
cc.TRANSITION_ORIENTATION_LEFT_OVER
cc.TRANSITION_ORIENTATION_RIGHT_OVER
-- TextVAlignment 文本的垂直对其方式
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1560612
cc.VERTICAL_TEXT_ALIGNMENT_TOP
cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM
cc.VERTICAL_TEXT_ALIGNMENT_CENTER
-- TextHAlignment 文本的水平对其方式
-- 含义参见:http://shahdza.blog.51cto.com/2410787/1560612
cc.TEXT_ALIGNMENT_LEFT
cc.TEXT_ALIGNMENT_RIGHT
cc.TEXT_ALIGNMENT_CENTER
//
1
2
3
4
5
//
-- hander : 执行的回调函数
-- value : 传递给回调函数的参数,必须为一个table
cc.CallFunc:
create
(hander, value)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//
-- node : 执行动作的对象
-- tab : 传过来的参数, 必须为一个table
local
function
callbackFunc(node, tab)
node:setScale(2)
print(
"x="
.. tab.x ..
",y="
.. tab.y)
end
local
sprite = cc.Sprite:
create
(
"normal.png"
)
sprite:setPosition(winSize.width/2, winSize.height/2)
self:addChild(sprite)
-- CallFunc回调动作
local
call = cc.CallFunc:
create
(callbackFunc, {x=1 , y=2} )
sprite:runAction(call)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//
local
scheduler, myupdate
local
timer = 0
local
function
update
(dt)
cclog(
"update: "
.. dt)
-- 输出log
timer = timer + dt
if timer >= 3
then
-- 执行3秒取消定时器
-- self:unscheduleUpdate() -- 取消定时器
scheduler:unscheduleScriptEntry(myupdate)
-- 取消定时器
end
end
-- 每帧执行一次update,优先级为0
-- self:scheduleUpdateWithPriorityLua(update, 0);
-- 每30/60秒执行一次update,会无限执行
scheduler = cc.Director:getInstance():getScheduler()
myupdate = scheduler:scheduleScriptFunc(
update
, 30.0 / 60.0,
false
)
//
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
//
local
menu
local
normal, hard
-- tag : 为menuItem设置的标签setTag
-- menuItem : 执行回调的menuItem对象
local
function
menuCallback(tag, menuItem)
print(
"menuItem: "
.. tag)
end
normal = cc.MenuItemImage:
create
(
"normal.png"
,
"normal.png"
)
normal:setPosition(0, 120)
normal:setTag(1)
hard = cc.MenuItemImage:
create
(
"hard.png"
,
"hard.png"
)
hard:setPosition(0, 20)
hard:setTag(2)
-- 创建菜单,最后不需要加NULL
menu = cc.Menu:
create
(normal, hard)
self:addChild(menu)
-- 菜单项回调
normal:registerScriptTapHandler(menuCallback)
-- 按钮事件
hard:registerScriptTapHandler(menuCallback)
-- 按钮事件
//
1
2
3
4
5
6
7
8
9
10
11
//
cc.CONTROL_EVENTTYPE_TOUCH_DOWN
-- 刚刚开始触摸按钮时
cc.CONTROL_EVENTTYPE_DRAG_INSIDE
-- 在内部拖动时(保持触摸状态下)
cc.CONTROL_EVENTTYPE_DRAG_OUTSIDE
-- 在外部拖动时(保持触摸状态下)
cc.CONTROL_EVENTTYPE_DRAG_ENTER
-- 拖动刚进入内部时(保持触摸状态下)
cc.CONTROL_EVENTTYPE_DRAG_EXIT
-- 拖动刚离开内部时(保持触摸状态下)
cc.CONTROL_EVENTTYPE_TOUCH_UP_INSIDE
-- 在内部抬起手指(保持触摸状态下)
cc.CONTROL_EVENTTYPE_TOUCH_UP_OUTSIDE
-- 在外部抬起手指(保持触摸状态下)
cc.CONTROL_EVENTTYPE_TOUCH_CANCEL
-- 取消触点时
cc.CONTROL_EVENTTYPE_VALUE_CHANGED
-- 按钮控件中值发生改变时
//
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
//
-- node : 执行回调的按钮对象
-- type : 按钮事件的类型
local
function
btnCallback(node, type)
if type == cc.CONTROL_EVENTTYPE_TOUCH_DOWN
then
print(
"touch down"
)
elseif type == cc.CONTROL_EVENTTYPE_DRAG_INSIDE
then
print(
"drag inside"
)
elseif type == cc.CONTROL_EVENTTYPE_TOUCH_UP_INSIDE
then
print(
"touch up inside"
)
end
end
-- 添加一个按钮 ControlButton
local
label = cc.Label:createWithSystemFont(
"button"
,
"res/fonts/Marker Felt.ttf"
,30)
local
sprite = cc.Scale9Sprite:
create
(
"normal.png"
)
local
btn = cc.ControlButton:
create
(label,sprite)
btn:setPosition(winSize.width/2, winSize.height/2)
self:addChild(btn)
-- 按钮事件回调
btn:registerControlEventHandler(btnCallback,cc.CONTROL_EVENTTYPE_TOUCH_DOWN)
btn:registerControlEventHandler(btnCallback,cc.CONTROL_EVENTTYPE_DRAG_INSIDE)
btn:registerControlEventHandler(btnCallback,cc.CONTROL_EVENTTYPE_TOUCH_UP_INSIDE)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
-- 1.获取事件分发器 : EventDispatcher
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
-- 2.创建事件监听器 : EventListener (这里以单点触摸为例)
local
listener = cc.EventListenerTouchOneByOne:
create
()
-- 3.注册事件响应函数: registerScriptHandler
-- hander : 响应函数
-- type : 事件类型
listener:registerScriptHandler(hander, type)
-- 4.在事件分发器中,添加监听器。事件响应委托为self
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
//
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
//
-- 触摸开始
local
function
onTouchBegan(touch, event)
print(
"Touch Began"
)
local
pos = touch:getLocation()
-- 获取触点的位置
print(pos.x ..
" , "
.. pos.y)
-- 输出log
return
true
-- 必须返回true 后边move end才会被处理
end
-- 触摸移动
local
function
onTouchMoved(touch, event)
print(
"Touch Moved"
)
end
-- 触摸结束
local
function
onTouchEnded(touch, event)
print(
"Touch Ended"
)
end
-- 注册单点触摸
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
local
listener = cc.EventListenerTouchOneByOne:
create
()
listener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(onTouchMoved, cc.Handler.EVENT_TOUCH_MOVED)
listener:registerScriptHandler(onTouchEnded, cc.Handler.EVENT_TOUCH_ENDED)
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
//
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
//
-- 触摸开始
local
function
onTouchesBegan(touches, event)
print(
"Touches Began"
)
local
pos1 = touches[1]:getLocation()
-- 获取触点1的位置
local
pos2 = touches[2]:getLocation()
-- 获取触点2的位置
local
delta = {
x = pos2.x - pos1.x ,
y = pos2.y - pos1.y
}
print(delta.x ..
" , "
.. delta.y)
-- 输出log
end
-- 触摸移动
local
function
onTouchesMoved(touches, event)
print(
"Touches Moved"
)
end
-- 触摸结束
local
function
onTouchesEnded(touches, event)
print(
"Touches Ended"
)
end
-- 注册多点触摸
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
local
listener = cc.EventListenerTouchAllAtOnce:
create
()
listener:registerScriptHandler(onTouchesBegan, cc.Handler.EVENT_TOUCHES_BEGAN)
listener:registerScriptHandler(onTouchesMoved, cc.Handler.EVENT_TOUCHES_MOVED)
listener:registerScriptHandler(onTouchesEnded, cc.Handler.EVENT_TOUCHES_ENDED)
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//
local
function
onKeyPressed(keyCode, event)
if keyCode == cc.KeyCode.KEY_A
then
print(
"Pressed A !"
)
-- 按下A键
end
end
local
function
onKeyReleased(keyCode, event)
if keyCode == cc.KeyCode.KEY_J
then
print(
"Released J !"
)
-- 松开J键
end
end
-- 注册键盘事件
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
local
listener = cc.EventListenerKeyboard:
create
()
listener:registerScriptHandler(onKeyPressed, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(onKeyReleased, cc.Handler.EVENT_KEYBOARD_RELEASED)
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//
-- 开启设备的加速计感应
self:setAccelerometerEnabled(
true
)
-- 响应函数
local
function
onAccelerationEvent(event, x, y, z,
timestamp
)
print(
"x: "
.. x)
print(
"y: "
.. y)
print(
"z: "
.. z)
print(
"timestamp: "
..
timestamp
)
end
-- 注册加速计监听器
local
dispatcher = cc.Director:getInstance():getEventDispatcher()
-- 直接传入 响应函数 作为参数
local
listener = cc.EventListenerAcceleration:
create
(onAccelerationEvent)
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)
//
1
2
3
4
5
//
cc.p(x, y)
-- 构造 Vec2
cc.
size
(width, height)
-- 构造 Size
cc.rect(x, y, width, height)
-- 构造 Rect
//
1
2
3
4
5
6
7
//
-- 直线AB与直线CD是否相交
cc.pIsLineIntersect(pA, pB, pC, pD,
float
,
float
)
-- 线段AB与线段CD是否相交
cc.pIsSegmentIntersect(pA, pB, pC, pD)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
//
cc.pDot(p1, p2)
-- 点积
cc.pCross(p1, p2)
-- 叉积
cc.pProject(p1, p2)
-- 投影: 前point在后point上的投影
cc.pGetLength(p)
-- 向量长度
cc.pLengthSQ(p)
-- 向量长度平方
cc.pGetDistance(p1, p2)
-- 坐标距离
cc.pDistanceSQ(p1, p2)
-- 坐标距离平方
cc.pGetAngle(p1, p2)
-- 向量夹角:弧度
//
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
//
cc.p(x, y)
-- 构造坐标point
cc.pAdd(p1, p2)
-- 相加
cc.pSub(p1, p2)
-- 相减
cc.pMidpoint(p1, p2)
-- 两向量的中点
cc.pNormalize(p1)
-- 标准化向量
cc.pGetClampPoint(minp, maxp, p)
-- 将p值限制在[minp,maxp]区间内
cc.pForAngle(
float
)
-- 返回坐标 x=cos(a) , y=sin(a)
cc.pPerp(p)
-- 逆时针旋转90度(-y, x)
cc.RPerp(p)
-- 顺时针旋转90度(y, -x)
-- 绕p1向量旋转
-- 返回向量: 角度 this.getAngle() +other.getAngle()
-- 长度 this.getLength()*other.getLength()
cc.pRotate(p1, p2)
-- 绕p1向量旋转前的向量值
-- 返回向量: 角度 this.getAngle() -other.getAngle();
-- 长度 this.getLength()*other.getLength();
cc.pUnrotate(p1, p2)
-- 直线AB与直线CD的交点
cc.pGetIntersectPoint(pA, pB, pC, pD)
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//
cc.rectGetMinX(rect)
-- rect.x
cc.rectGetMidX(rect)
-- (rect.x + rect.width) / 2
cc.rectGetMaxX(rect)
-- rect.x + rect.width
cc.rectGetMinY(rect)
-- rect.y
cc.rectGetMidY(rect)
-- (rect.y + rect.height) / 2
cc.rectGetMaxY(rect)
-- rect.y + rect.height
-- 判断是否与rect相同. 原点相同,尺寸相同.
cc.rectEqualToRect(rect1, rect2)
-- 判断point是否包含在矩形内
cc.rectContainsPoint(rect, point)
-- 判断矩形是否相交. 常常用作碰撞检测.
cc.rectIntersectsRect(rect1, rect2)
-- 两矩形合并
cc.rectUnion(rect1, rect2)
//
1
2
3
4
5
//
cc.c3b(byte,byte,byte)
-- 构造 Color3B
cc.c4b(byte,byte,byte,byte)
-- 构造 Color4B
cc.c4f(
float
,
float
,
float
,
float
)
-- 构造 Color4F
//
1
2
3
4
5
6
//
getPosition()
-- 返回两个值:x y
getAnchorPoint()
-- point_table
getContentSize()
-- size_table
getBoundingBox()
-- rect_table
//
1
2
3
4
5
6
7
//
-- 方法一 : 用两个变量接收
local
x, y = sprite:getPosition()
-- 方法二 : 转换为point_table
local
p = cc.p(sprite:getPosition())
//
1
2
3
4
5
6
7
8
9
//
tab = { x = 1 }
function
tab.fun(self)
print(self.x)
end
a.fun(a)
-- 需要将a本身做为参数传给fun函数
//
1
2
3
4
5
6
7
8
9
//
a = { x = 1 }
function
a:fun()
print(self.x)
end
a:fun()
//
阅读全文
0 0
- Cocos之 从C++过渡到Lua
- Cocos之_从C++过渡到Lua
- 3------Cocos之_从C++过渡到Lua
- Cocos-x :从C++过渡到Lua
- Cocos 从C++过渡到Lua
- 必看:Cocos-x 3.2:从C++过渡到Lua
- Cocos-x 3.2:从C++过渡到Lua
- Cocos-x 3.2:从C++过渡到Lua
- 转载,必看:Cocos-x 3.2:从C++过渡到Lua
- 【从C++过渡到Lua】
- 【从C++过渡到Lua】
- 【Cocos2d-x】从C++过渡到Lua
- 【Cocos2d-x】从C++过渡到Lua
- 【Cocos2d-x】从C++过渡到Lua
- 【Cocos2d-x】从C++过渡到Lua
- 【Cocos2d-x】从C++过渡到Lua
- 【Cocos2d-x】从C++过渡到Lua
- 从C过渡到C++
- [PAT]Table Tennis (30)Java实现
- 应用程序窗体切至前台的方法
- aj增删改查完整版1
- Linux 基础命令(一)
- tf.truncated_normal的用法
- Cocos之 从C++过渡到Lua
- Android Kotlin(二)—— Kotlin与Retrofit进行网络请求RecyclerView展示图片列表
- TextView根据宽度截取字符串
- RabbitMQ(四)消息确认(发送确认,接收确认)
- 经典网络的 TensorFlow 实现资源汇总
- C语言第五章重要知识总结
- 几种委托指向函数的方式
- 实例开发聊天室 tcp协议
- HTML 练习题3