CC3.2+Lua(9) ——从C++过渡到Lua
本文出自 “夏天的风” 博客,请务必保留此出处http://www.voidcn.com/article/p-cmebpzex-wx.html?
本人只是出自学习方便特转到此处
标签:
lua?
cocos2dx
原创作品,允许转载,转载时请务必以超链接形式标明文章?
原始出处?、作者信息和本声明。否则将追究法律责任。
http://www.voidcn.com/article/p-cmebpzex-wx.html
|
winSize?=?cc.Director:getInstance():getWinSize()
--?继承Layer类
MenuLayer?=?class(
"MenuLayer"
,?
function
()
return
?
cc.Layer:
()
end
)
--?初始化函数
function
?
MenuLayer:ctor()
self.
name
?
=?
"hello"
?????????
--?成员变量
size
?
=?cc.
size
(0,?0)???
--?成员变量
end
--?创建包含GameLayer的场景
MenuLayer:createScene()
scene?=?cc.Scene:
()
layer?=?MenuLayer:
()
scene:addChild(layer)
scene
end
--?创建GameLayer层
MenuLayer:
()
layer?=?MenuLayer.new()??
--?new()
layer:init()???????????????????
--?init()
layer
end
--?初始化
MenuLayer:init()
self:ShowUI()???????
--?添加界面元素(Sprite、Label等)
self:addBtn()???????
--?添加菜单按钮
self:addTouches()???
--?添加多点触摸
end
--?添加界面
MenuLayer:ShowUI()
????
--?背景图片Sprite
bg?=?cc.Sprite:
(
"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"
self.label:setPosition(winSize.width/2,?winSize.height/2)
self:addChild(self.label)
end
--?添加按钮
MenuLayer:addBtn()
menu
normal,?hard
--?回调函数
--?tag?为menuItem设置的标签setTag?,menuItem为相应对象
local
?
menuCallback(tag,?menuItem)
????????
print(
"menuItem:?"
?
..?tag)????
--?Lua中的输出语句
end
normal?=?cc.MenuItemImage:
"normal.png"
)
normal:setPosition(0,?120)
normal:setTag(1)
normal:registerScriptTapHandler(menuCallback)???
--?按钮事件
hard?=?cc.MenuItemImage:
"hard.png"
)
hard:setPosition(0,?20)
hard:setTag(2)
hard:registerScriptTapHandler(menuCallback)?????
--?按钮事件
--?创建菜单,最后不需要加NULL
menu?=?cc.Menu:
(normal,?hard)
self:addChild(menu)
end
--?多点触摸
MenuLayer:addTouches()
touch1,?touch2?=?cc.Touch,?cc.Touch
onTouchesBegan(touches,?event)
"Touches?Began"
)
touch1?=?touches[1]?????
--?第一个触点,下标从1开始
touch2?=?touches[2]?????
--?第二个触点
????????
pos1?=?touch1:getLocation()???
--?获取触点1的位置
pos2?=?touch2:getLocation()???
--?获取触点2的位置
delta?=?{
????????????
x?=?pos2.x?-?pos1.x?,
y?=?pos2.y?-?pos1.y
}
print(delta.x?..?
"?,?"
?
..?delta.y)??
--?输出log
end
onTouchesMoved(touches,?event)
"Touches?Moved"
)
end
onTouchesEnded(touches,?event)
"Touches?Ended"
)
end
--?注册多点触摸
dispatcher?=?cc.Director:getInstance():getEventDispatcher()
listener?=?cc.EventListenerTouchAllAtOnce:
()
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
//
sprintf
(str,?
"hero_%02d.png"
而在Lua中则是使用?string.format()?函数。
string.format(
"hero_%02d.png"
4、Lua中的枚举类型
119
--?含义参见: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
//