美文网首页cocos2d-xcocos2d-Lua
关于无限滚动(基于Cocos2d-x 3.3)

关于无限滚动(基于Cocos2d-x 3.3)

作者: CJ26 | 来源:发表于2017-07-25 11:38 被阅读26次

      大大小小关于无线滚动的文章很多。本人只是单单记录一些。自己的一些想法。

    那么关于无限地图最主要就是要保证首尾相接。就可以保证地图的无限滚动了。如果不能保证那就回出现大大小小的问题。导致很不自然。那么我们直接看代码的实现过程吧!

    首先需要初始化地图的数量。至少两张。这是一个横向的滚动。那么纵向的也是一样的思想

    self.moveTargets = {

    display.newSprite("shake/pan/bg.png",0,0),

    display.newSprite("shake/pan/bg.png",1136,0),

    display.newSprite("shake/pan/bg.png",2272,0),

    display.newSprite("shake/pan/bg.png",3408,0)

    }

    然后开始初始化一些信息。当然可以把上面的代码都放到一个for里面。初始就ok了节省代码。

    fori,vinpairs(self.moveTargets)do

    v:setAnchorPoint(0,0)

    v:addChild(display.newTTFLabel({text =string.format("xxxxxxx %d",i),size =40,x =200,y =200}))

    self:addChild(v)

    end

    地图的数量

    self.scrollLen = #self.moveTargets

    初始化地图的宽度

    self.moveWidth =self.moveTargets[1]:getContentSize().width

    self.bgMoveX = self.moveWidth

    self.scrollIndex =1

    self.moveEnd =0

    然后就是滚动函数了

    functionBoxMonsterScrollNode:onMoveBackground()

    self.bgMoveX = self.bgMoveX - BG_MOVE_SPEED ---做 地图交替处理

    ifself.bgMoveX <=self.moveEnd then --判断时候需要更换位置

    self.moveTargets[self.scrollIndex]:setPositionX(self.moveWidth * (self.scrollLen -1))

    self.scrollIndex = self.scrollIndex +1

    if self.scrollIndex > self.scrollLen then

    self.scrollIndex =1 ----每一次需要更换的对象index

    end

    self.bgMoveX = self.moveWidth  ----重置默认

    self.moveEnd = BG_MOVE_SPEED

    end

    fori,vinpairs(self.moveTargets)do

    v:setPositionX(v:getPositionX() -BG_MOVE_SPEED) ----设置位置

    end

    end

    大概思路便是如此了。有何问题可以留言

    相关文章

      网友评论

        本文标题:关于无限滚动(基于Cocos2d-x 3.3)

        本文链接:https://www.haomeiwen.com/subject/encwkxtx.html