luaUI 2

1.遍历 layer 的 children

local function allChildren( parent )
	local nodes = parent:getChildren()

	if nodes then
		for idx=1, nodes:count() do
			local  chilNode = nodes:objectAtIndex(idx - 1)
			local node = tolua.cast(chilNode, "CCSprite")

			node:setOpacity(0)
			allChildren(node)
		end
	end
end

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 sprite
end

local 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 label
end

local 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 item
end

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接近 2
	print('scheduleT   '..dt)
end
local 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 then
	elseif eventType == CCTOUCHENDED then
	end
end

pLayer = 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 spt
end

local 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);











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值