Cocos2d-Lua语法

Quick安装和环境配置
1. 在终端中 cd + quick安装的路径,进入quick目录
2. ./setup_mac.sh 搭建Mac开发环境的脚本
3. 打开player3,新建项目(如:QuickTest),选择项目的存放位置(Choose Project Location)和(Project package name(注意是四点式,如a.a.a.Bang))
4. 把刚创建的文件拖入到Sublime中,侧边栏如果没有显示,选择sublime菜单栏上的View > Side Bar > Show Side Bar.
5. 选择Sublime菜单栏下的Sublime Text2 > preferences > Browse Packages,把QuickXDev文件放入Packages文件中
6. 选择Sublime菜单栏下的Sublime Text2 > preferences > Package Settings > QuickXDev > Settings-User
7. 在Settings-User中写入
{
"quick_cocos2dx_root":"/Users/neworigin/Documents/quick-3.3",
"author":"neworigin"
}
8.在QuickTest/src/app/scenes/MainScene.lua中右键选择Run with Player.

帧动画
第一种、
display.addSpriteFrames("grossini-aliases.plist","grossini-aliases.png")
local cache = cc.SpriteFrameCache:getInstance()
local frames = {}
for i = 1,14 do
-- local frameName = "grossini_dance_" .. i .. ".png"
local frameName = string.format("grossini_dance_%02d.png",i)
local frame = cache:getSpriteFrame(frameName)
frames[#frames + 1] = frame -- 下标类型,不能有key值存在
end
local animation = cc.Animation:createWithSpriteFrames(frames,0.5)
local animate = cc.Animate:create(animation)

local sp = cc.Sprite:createWithSpriteFrame(cache:getSpriteFrame("grossini_dance_01.png"))
sp:pos(display.cx, display.cy)
sp:addTo(self)
sp:runAction(animate)
第二种、
display.addSpriteFrames("grossini-aliases.plist","grossini-aliases.png")
local cache = cc.SpriteFrameCache:getInstance()
local frames = display.newFrames("grossini_dance_%02d.png",1,14)
local animation = display.newAnimation(frames,2/4)

local sp = display.newSprite("#grossini_dance_01.png",display.cx,display.cy) -- #表示图片从精灵帧缓存中取出
-- local sp = cc.Sprite:createWithSpriteFrame(cache:getSpriteFrame("grossini_dance_01.png"))
-- sp:pos(display.cx, display.cy)
sp:addTo(self)
-- sp:playAnimationOnce(animation)
sp:playAnimationForever(animation, 1)

触摸监听
第一种:
local touchBegan = function(touch,event)
local point = touch:getLocation()
dump(point)
dump(event:getEventCode())
return true
end
local touchMoved = function()
print("moved")
end
local touchEnded = function()
print("ended")
end

local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(touchMoved,cc.Handler.EVENT_TOUCH_MOVED)
listener:registerScriptHandler(touchEnded,cc.Handler.EVENT_TOUCH_ENDED)
local director = cc.Director:getInstance()
local dispatcher = director:getEventDispatcher()
dispatcher:addEventListenerWithSceneGraphPriority(listener, self)

第二种:
self:setTouchEnabled(true)
self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function()
print("···")
end)

local sprite = cc.Sprite:create("HelloWorld.png")
sprite:pos(size.width/2, size.height/2)
sprite:addTo(self)

sprite:setTouchEnabled(true) --自动吞噬上面的触摸监听
sprite:setTouchSwallowTouches(true) --手动
sprite:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
if event.name == "began" then
print("began")
return true
elseif event.name == "moved" then
print("moved")
elseif event.name == "ended" then
print("ended")
end
end
)
调度器
第一种:
local x = 0
local func = function ( )
x = x + 1
print(x)
if x == 10 then
-- local scheduler = cc.Director:getInstance():getScheduler()
scheduler:unscheduleScriptEntry(self.schedulerID)
end
end
scheduler = cc.Director:getInstance():getScheduler() --获取调度器
self.schedulerID = scheduler:scheduleScriptFunc(func,0.5,false)
--注册调度器的方法,第二个参数为间隔时间,是否把方法关闭,false表示不关闭,创建完直接调用,0为每帧调度一次
第二种:
-- 第二种 首先要加载scduler模块
--local scheduler = require(cc.PACKAGE_NAME .. ".scheduler") --在第5行
local x = 0
local func = function()
x = x + 1
print(x)
if x == 10 then
-- scheduler.unscheduleGlobal(schedulerID)
end
end
schedulerID = scheduler.scheduleGlobal(func,0.2)
schedulerID = scheduler.scheduleUpdateGlobal(func) --每帧调用
x = 0
self.schedulerID = scheduler.scheduleUpdateGlobal(handler(self, self.func3)) --调用方法外的方法,需要handler

end
function MainScene:func3()

x = x + 1
print(x)
if x == 10 then
scheduler.unscheduleGlobal(self.schedulerID)
end
end
UI
Button
第一种 ccui C++接口的UI
--[[
local button = ccui.Button:create("button_n.png","button_p.png","button_n.png")
button:pos(display.cx, display.cy)
button:addTo(self)
button:addTouchEventListener(function(psender,event)
if event == 2 then --0为按下,1为移动,2为松开
print("···")
end
end
)


-- Button 第二种 cc.ui quick封装好的UI
local images = { normal = "button_n.png",
pressed = "button_p.png",
disable = "button_n.png"
}
local pushButton = cc.ui.UIPushButton.new(images)
pushButton:pos(display.cx, display.cy)
pushButton:addTo(self)
pushButton:onButtonClicked(function()
print("click")
end)
pushButton:onButtonPressed(function()
print("pressed")
end)
Slider
slider 第一种
local slider = ccui.Slider:create()
slider:loadBarTexture("sliderTrack2.png")
slider:loadProgressBarTexture("sliderProgress2.png")
slider:loadSlidBallTextureNormal("sliderballnormal.png")
slider:loadSlidBallTexturePressed("sliderballPressed.png")
slider:setPercent(100)
slider:pos(display.cx, display.cy)
slider:addTo(self)
slider:addEventListener(function(psender) --最多只接收一个参数
print(psender:getPercent())
end)

slider 第二种
local images = { bar = "sliderTrack2.png",button = "sliderballnormal.png"}
local slider = cc.ui.UISlider.new(display.LEFT_TO_RIGHT,images)
slider:pos(display.left+80, display.cy)
slider:addTo(self)
slider:onSliderValueChanged(function(event)
dump(event)
end)
LoadingBar
--LoadingBar 第一种
local loadingBar = ccui.LoadingBar:create("loadingbar.png")
loadingBar:pos(display.cx, display.cy)
loadingBar:addTo(self)
loadingBar:setPercent(50)
loadingBar:setDirection(display.RIGHT_TO_LEFT)

-- LoadingBar 第二种
local param = { image = "loadingbar.png",
viewRect = { x = display.left+80,
y = display.cy,
width = 520,
height = 52
}, -- image,viewRect两个参数必须设置
percent = 30
}
local loadingBar = cc.ui.UILoadingBar.new(param)
loadingBar:pos(display.left+80, display.cy)
self:addChild(loadingBar)
CheckBox
CheckBox第一种
local checkBox = ccui.CheckBox:create()
checkBox:loadTextureBackGround("check_box_normal.png")
checkBox:loadTextureBackGroundSelected("check_box_normal_pressed.png")
checkBox:loadTextureFrontCross("check_box_normal_press.png")
checkBox:pos(display.cx, display.cy)
checkBox:addTo(self)
checkBox:addEventListener(function(psender,event)
print(psender)
print(event)
end)

--CheckBox第二种
local images = { on = "sliderballnormal.png",
off = "sliderballPressed.png",
}
local checkbox = cc.ui.UICheckBoxButton.new(images)
checkbox:pos(display.cx, display.cy)
checkbox:addTo(self)
checkbox:onButtonStateChanged(function(event)
dump(event)
end)

--CheckBoxGroup
local checkBoxGroup = cc.ui.UICheckBoxButtonGroup.new(display.TOP_TO_BOTTOM)
checkBoxGroup:addButton(cc.ui.UICheckBoxButton.new(images))
checkBoxGroup:addButton(cc.ui.UICheckBoxButton.new(images))
checkBoxGroup:addButton(cc.ui.UICheckBoxButton.new(images))
checkBoxGroup:pos(display.cx,display.cy)
checkBoxGroup:addTo(self)
checkBoxGroup:onButtonSelectChanged(function(event)
dump(event)
end)
ScrollView
--ScrollView第一种
local scrollView = ccui.ScrollView:create()
scrollView:setContentSize(cc.size(200,200))
scrollView:setInnerContainerSize(cc.size(624,416))
scrollView:pos(display.cx, display.cy)
scrollView:setDirection(3) --0不可滑动,1垂直,2水平,3随意
scrollView:setAnchorPoint(cc.p(0.5,0.5))
scrollView:addTo(self)
local sp = display.newSprite("HelloWorld.png")
sp:pos(0, 0)
sp:setAnchorPoint(cc.p(0,0))
sp:addTo(scrollView)
scrollView:addEventListener(function(psender,event)
print(event)
end)

-- ScrollView第二种
local param = { viewRect = cc.rect(200,200,300,300)} --前两个参数表示窗口的x,y值;后两个为窗口的大小
local scrollView = cc.ui.UIScrollView.new(param)
scrollView:addTo(self)
-- scrollView:addScrollNode(display.newSprite("HelloWorld.png"))
local sp = display.newSprite("HelloWorld.png")
sp:pos(200, 200)
scrollView:addScrollNode(sp)
scrollView:onScroll(function(event)
dump(event)
end)
ListView
--ListView第一种
local listView = ccui.ListView:create()
listView:setContentSize(cc.size(200,300))
listView:pos(display.cx-100, display.cy-150)
listView:addTo(self)
listView:setDirection(ccui.ScrollViewDir.vertical)
for i = 1,10 do
-- widget(子类: ccui(Scale9Sprite除外))
local item = ccui.ImageView:create("sliderballnormal.png")
listView:pushBackCustomItem(item)
item:setTouchEnabled(true)
item:setSwallowTouches(false)
end
listView:addEventListener(function(psender,event)
print(event)
end)
--ListView第二种
local param = {
direction = cc.ui.UIScrollView.DIRECTION_VERTICAL,
viewRect = cc.rect(200,200,300,300)
}
local listView = cc.ui.UIListView.new(param)
for i = 1,10 do
local item = listView:newItem()
local images = {
normal = "sliderballnormal.png",
pressed = "sliderballnormal.png",
disable = "sliderballnormal.png"

}
local content = cc.ui.UIPushButton.new(images)
content:onButtonPressed(function()
print("button")
end)
item:addContent(content)
item:setItemSize(150,150)
listView:addItem(item)
content:setTouchSwallowEnabled(false) --默认吞噬,不设为false,listView不会移动
end
listView:addTo(self)
listView:reload() -- 添加新控件的时候需要刷新
listView:onTouch(function(event)
if event.name == "moved" then
end
end)

PageView
--PageView第一种
local pageView = ccui.PageView:create()
pageView:setContentSize(cc.size(624,416))
pageView:pos(display.cx, display.cy)
pageView:setAnchorPoint(cc.p(0.5,0.5))
pageView:addTo(self)
for i = 1,3 do
local layout = ccui.Layout:create()
local sp = display.newSprite("HelloWorld.png")
sp:pos(0, 0)
sp:setAnchorPoint(cc.p(0,0))
sp:addTo(layout)
pageView:addPage(layout)
end
pageView:addEventListener(function(psender,event)
print(tolua.type(psender))
print(event)
end)

--PageView第二种
local param = { viewRect = cc.rect(200,200,624,416)}
local pageView = cc.ui.UIPageView.new(param)
pageView:addTo(self)
for i = 1,3 do
local item = pageView:newItem();
local content = display.newSprite("HelloWorld.png")
content:setAnchorPoint(cc.p(0,0))
item:addChild(content)
pageView:addItem(item)
end
pageView:reload()
pageView:onTouch(function(event)
dump(event)
end)
MenuItem
local func = function()
print("···")
end

local menuItem = cc.MenuItemImage:create("sliderballnormal.png","sliderballnormal.png")
menuItem:pos(display.cx, display.cy)
menuItem:registerScriptTapHandler(func)
local menu = cc.Menu:create(menuItem)
menu:pos(0, 0)
menu:addTo(self)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值