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

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

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

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,326评论 25 709
  • 在朋友圈公布自己的微信公众号后,不少朋友问我是不是转自媒体了; 很显然,不是。 首先,在我看来要做成自媒体很难,最...
    徐彦超阅读 3,177评论 1 1
  • [只不过是一条街的事情 ]星期五 住在橘子镇Duets大街201号的阿猴先生七点十五。 阿猴先生从混沌的梦中醒来。...
    金鲤四格裙里游阅读 1,904评论 0 0