Quick-cocos2d-x3.3 Study (七)--------- 滚动的背景

滚动的背景

1. 先创建两个背景图片,并添加到一个表中

 1 -- 创建一个滚动的背景
 2 function GameScene:createBackground(  )
 3     -- body
 4     -- 创建一个背景1
 5     local background1 = display.newSprite("image/background/b1.png")
 6         :align(display.BOTTOM_LEFT, display.left, display.bottom + 10)
 7         :addTo(self)
 8     local background2 = display.newSprite("image/background/b2.png")
 9         :align(display.BOTTOM_LEFT, display.left + background1:getContentSize().width, display.bottom)
10         :addTo(self)
11 
12     -- 把创建的两个背景添加到表中
13     table.insert(self.background, background1)
14     table.insert(self.background, background2)
15 
16 end

2.创建一个滚动背景的函数

 1 -- 创建一个滚动背景的函数
 2 function GameScene:scrollBackground( dt )
 3     -- body
 4     -- 判断第二个背景的位置,如果移动到超出屏幕的左边,则将第一个背景显示到屏幕上
 5     if self.background[2]:getPositionX(  ) <= 0 then
 6         self.background[1]:setPositionX( 0 )
 7     end
 8     -- 设置x轴的位置,一每帧50的速度向右运动
 9     local x1 = self.background[1]:getPositionX() - 50 * dt
10     -- 背景二的图片紧跟背景一的图片
11     local x2 = x1 + self.background[1]:getContentSize().width
12     -- 设置两个图片的位置
13     self.background[1]:setPositionX(x1)
14     self.background[2]:setPositionX(x2)
15 
16 end

3.在crot函数中调用这两个函数,并启动update, (帧事件)实现背景的滚动

 1 function GameScene:ctor(  )
 2     -- body
 3     -- 创建一个 table 来存放背景
 4     self.background = {}
 5 
 6     self:createBackground()
 7 
 8     -- 调用帧事件
 9     self:addNodeEventListener( cc.NODE_ENTER_FRAME_EVENT, handler( self, self.scrollBackground ) )
10     self:scheduleUpdate()
11 
12 end

 

 self:unscheduleUpdate()  -- 禁用帧事件,停止整个背景层滚动

 

其中,addNodeEventListener 方法用于注册帧事件,

scheduleUpdate 方法则启用了帧事件,

只有调用了 scheduleUpdate 后,帧事件才会被触发

 

gs

posted @ 2015-09-18 10:38  silent-bobo  阅读(255)  评论(0编辑  收藏  举报