QuickCocos使用总结
开发环境:Quick3.6.2社区版,CocosStudio2.0.6,Windows10,VS2013
在新公司开发的新项目使用的是quick+studio制作消除游戏,因为是全新的引擎和全新的UI编辑器,使用上还是有些坑和API的,在此记录。Cocos 资料大全里有各个版本的API和引擎等的下载。
安卓打包环境:
- SDK 20
- NDK ndk-r9d
- JDK 1.7
- quick 3.6.2(社区版)
- CocosStudio 2.0.6
- apache-ant-1.9.4-bin
- adt-bundle-windows-x86_64-20140702
csb文件加载
local _node = cc.uiloader:load(filename) -- 加载csb文件
cc.uiloader:seekNodeByTag(_node ,1) -- 通过节点tag获取节点
-- 这里源码部分有错。源码中 uiloader:seekNodeByName这个方法里name == parent.name改为name == parent:getName()
cc.uiloader:seekNodeByName(_node ,"node1") --通过节点名字获取节点按钮监听
local _musicBtn = cc.uiloader:seekNodeByName(self._mainNode,"mMusicBtn") -- 获取button的node
_musicBtn:addTouchEventListener(function(sender,eventType)
if eventType==ccui.TouchEventType.began then
if game.SoundOn==true then
audio.playSound(GAME_SOUND.tapButton) --audio是quick中控制音乐播放api
end
elseif eventType==ccui.TouchEventType.ended then
if callBackFunc then
callBackFunc()
end
end
end) --eventType类型在DeprecatedUIEnum.lua中进度条和动画加载
display.addImageAsync(imagePath, callback) --异步加载png,jpg,plist等
display.addSpriteFrames("disapearAni.plist", "disapearAni.png")--将plist放入内存
local frames = display.newFrames("disappear%02d.png",1,6)--用plist制作动画
local animation = display.newAnimation(frames,0.6/6) --0.6s里面播放6帧
display.setAnimationCache("disappear",animation) --设置动画别名可直接调用
sprite:playAnimationOnce(display.getAnimationCache("disappear"),true)--Sprite:playAnimationOnce(animation, removeWhenFinished, onComplete, delay)帧动画
self._mainRoleNode =cc.CSLoader:createNode("Luffy.csb"):addTo(self)
self._mainRoleAni = cc.CSLoader:createTimeline("Luffy.csb")
self._mainRoleNode:runAction(self._mainRoleAni)
self._mainRoleAni:gotoFrameAndPlay(frameBegin,frameEnd,true)-- frameBegin动画开始帧,frameEnd动画结束帧,true是否循环。目前只找到这个方法播放动画。用延迟来控制动画播放后的回调函数(很希望能找到动画结束的回调啊)控件方法
-- 输入框editBox
local editBox2 = cc.ui.UIInput.new({
image = "EditBoxBg.png",
size = cc.size(400, 96),
x = display.cx,
y = display.cy,
listener = function(event, editbox)
if event == "began" then
self:onEditBoxBegan(editbox)
elseif event == "ended" then
self:onEditBoxEnded(editbox)
elseif event == "return" then
self:onEditBoxReturn(editbox)
elseif event == "changed" then
self:onEditBoxChanged(editbox)
else
printf("EditBox event %s", tostring(event))
end
end
})
editBox2:setReturnType(cc.KEYBOARD_RETURNTYPE_SEND)
self:addChild(editBox2)
-- 按钮切换三态图片
loadTextureNormal(name, type) --替换正常显示的效果
loadTexturePressed(name, type)--替换按下显示的效果
loadTextureDisabled(name, type)--替换禁用的效果
--type==0,表示从本地加载,type==1,表示从缓存的cache也就是打包生成的plist里加载
-- 经验条
local expBar = cc.uiloader:seekNodeByTag(self._mainNode,301)
expBar:setPercent(20)
-- 文本Label
local defLabel = cc.uiloader:seekNodeByTag(self._mainNode,203)
defLabel:setString("10")
-- 图片置灰
display.newGraySprite(filename, params) --params在filter.lua中可查到版权声明:本文为zhaolu122333原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。