luaUI 2

来源:互联网 发布:Ht.js 编辑:程序博客网 时间:2024/04/30 12:05

1.遍历 layer 的 children

local function allChildren( parent )local nodes = parent:getChildren()if nodes thenfor idx=1, nodes:count() dolocal  chilNode = nodes:objectAtIndex(idx - 1)local node = tolua.cast(chilNode, "CCSprite")node:setOpacity(0)allChildren(node)endendend

2.基础控件

local function addSprite(img, pos, scale, zorder, parent)local sprite = CCSprite:createWithTexture( CCTextureCache:sharedTextureCache():addImage(img) )sprite:setScale(scale)sprite:setPosition(pos)parent:addChild(sprite, zorder)return spriteendlocal function addLabel(text, type, size, pos, color, parent, zorder)local label = CCLabelTTF:create(text, type, size);label:setPosition(pos)label:setColor(color)parent:addChild(label, zorder)return labelendlocal function addMenu(imgn, imgs, imgd, callback, pos, scale, parent, zorder)    local sNormal = CCSprite:createWithTexture(CCTextureCache:sharedTextureCache():addImage(imgn))    local sSelected = CCSprite:createWithTexture(CCTextureCache:sharedTextureCache():addImage(imgs));    local sDisabled = CCSprite:createWithTexture(CCTextureCache:sharedTextureCache():addImage(imgd));    local item = CCMenuItemSprite:create(sNormal, sSelected, sDisabled)    item:registerScriptTapHandler(callback)    item:setPosition(pos)    item:setScale(scale)    local menu = CCMenu:create()    menu:addChild(item)    menu:setPosition(CCPoint(0, 0))    parent:addChild(menu, zorder)    return itemend

3.ScrollView

local function addScroll( size, csize, parent)local scroll = CCScrollView:create(size)   scroll:setDirection(kCCScrollViewDirectionVertical)   parent:addChild(scroll)   scroll:setContentOffset(CCPoint(0, 0))   local sLayer = CCLayerColor:create(ccc4(120, 0, 0, 0), size.width, sLayerH)   scroll:addChild(sLayer)scroll:setContentSize(CCSize(size.width, sLayerH))               —一般和laye大小相等end

3.定时方法

local function scheduleT(dt)  —dt接近 2print('scheduleT   '..dt)endlocal scheduler = CCDirector:sharedDirector():getScheduler()local schedulerEntry = scheduler:scheduleScriptFunc(scheduleT, 2.0, false)scheduler:unscheduleScriptEntry(schedulerEntry)

4.触屏事件

local function touchFunc(eventType, x, y)if eventType == CCTOUCHBEGAN then-- print('tttt   '..x[1])                  多点触控-- print('tttt   '..x[2])print('tttt   '..x)return true--return true CCTOUCHBEGAN 事件不会在向上传递, 上层按钮可能不好使elseif eventType == CCTOUCHMOVED thenelseif eventType == CCTOUCHENDED thenendendpLayer = CCLayerColor:create(ccc4(0, 0, 0, 180), winSize.width, winSize.height)runScene:addChild(pLayer, 99, 1010)pLayer:setTouchEnabled(true)-- pLayer:setTouchMode(kCCTouchesAllAtOnce)                                       多点触控pLayer:setTouchMode(kCCTouchesOneByOne)pLayer:setTouchPriority(kCCMenuHandlerPriority - 103)pLayer:registerScriptTouchHandler(touchFunc)

1.layer 可以通过 setTouchPriority(kCCMenuHandlerPriority - 10),设置的层比按钮的层低,在begin的时候 return true可以屏蔽下面的按钮事件,

  按钮事件主要在begin里响应,move 和 end 不会触发按钮事件。

2.Sprite 不能注册触摸事件 registerScriptTouchHandler 

3.一个 scne 上多个layer 注册了触摸事件。

  begin:setTuchPriority 最低的先响应,有一层返回 true 了高层的不会响应。

  move:那层begin返回true那层的move响应,与setTuchPriority无关,没有layer的begin返回true,move不会触发

  end:  同move

注意:如果layer的begin没有返回true,move和end不会响应

4.move事件响应

local function touchz(eventType, x, y)
        print('touchz1   '..x)
        if eventType == CCTOUCHBEGAN then
                return true
        elseif eventType == CCTOUCHMOVED then
               print('touchz2   move   '..x)
        elseif eventType == CCTOUCHENDED then
        end
end

移动时候不会在输出 print('touchz1   '..x),move时候只调用print('touchz2   move   '..x)。


5.进度条

local function addProgress(img, direc, percent, pos, anch, parent)local spt = CCProgressTimer:create(CCSprite:create(img))spt:setMidpoint(CCPoint(0,0))   spt:setBarChangeRate(direc)               --竖:1, 0、横:0, 1   spt:setType(kCCProgressTimerTypeBar)      --kCCProgressTimerTypeRadial  kCCProgressTimerTypeBar   spt:setPosition(pos)    spt:setAnchorPoint(anch)    spt:setScale(0.5)    spt:setPercentage(percent)    parent:addChild(spt, 1)return sptendlocal spt = addProgress('hello.png', CCPoint(1, 0), 30, CCPoint(160, 228), CCPoint(0.5, 0.5), pLayer)local pto = CCProgressTo:create(2, 100)spt:runAction(pto);











0 0