Cocos2d-x_创建多个滚动层(每层速度不同)

	local scheduler = cc.Director:getInstance():getScheduler()
	local winSize = cc.Director:getInstance():getWinSize()

	--创建循环地图
	local function createLoopMap(name, tag)
		local width = 1536

		local m_bg1 = cc.Sprite:create(name)
		m_bg1:setAnchorPoint(cc.p(0, 0))
		m_bg1:setPosition(cc.p(0, 0))
		m_bg1:setTag(111)

		local m_bg2 = cc.Sprite:create(name)
		m_bg2:setAnchorPoint(cc.p(0, 0))
		m_bg2:setPosition(cc.p(winSize.width, 0))
		m_bg2:setTag(222)
	
		local node = cc.Node:create()
		node:addChild(m_bg1)
		node:addChild(m_bg2)
		node:setTag(tag)

		return node
	end
	
	local m_bg1 = createLoopMap("bg1.jpg", 1)
    self.m_bg1 = m_bg1  
  
    local m_bg2 = createLoopMap("crop.png", 2)  
    self.m_bg2 = m_bg2  
	
	self.panel.layer:addChild(m_bg1)
	self.panel.layer:addChild(m_bg2)
	
    local function updateFunc(dt)  
		for	i = 1, 2 do
			local node = self.panel.layer:getChildByTag(i)
			local bg1 = node:getChildByTag(111)
			local bg2 = node:getChildByTag(222)
			
			local posX1 = bg1:getPositionX()  
			local posX2 = bg2:getPositionX()
			
			local speed = 0
			if i == 1 then
				speed = 5.0
			elseif i == 2 then
				speed = 10.0
			end
			
			posX1 = posX1 - speed  
			posX2 = posX2 - speed  
			local width = winSize.width  
		  
			if posX1 < -width then
				posX2 = 0  
				posX1 = width  
			end  
		  
			if posX2 < -width then
				posX1 = 0
				posX2 = width 
			end  
		  
			bg1:setPositionX(posX1)  
			bg2:setPositionX(posX2) 
		end
    end  
  
    if self.updateHandler == nil then  
        self.updateHandler = scheduler:scheduleScriptFunc(updateFunc,0,false)  
    end  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值