微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,false)  
    end  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐