QuickCocos使用总结

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版权协议,转载请附上原文出处链接和本声明。