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  

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...