背景图移动的时候,中间有间隔如何解决?

代码如下:
创建:
local backScorllName = “#pk_app_bg_1_2”…self.deviceName…"@2x.png"
self.bg2Sprite1 = display.newSprite(backScorllName)
:addTo(backgroundLayer, 2)
self.bg2Sprite1:setAnchorPoint(ccp(0, 0))
self.bg2Sprite1:setPosition(0, 0)

self.bg2Sprite2 = display.newSprite(backScorllName)
        :addTo(backgroundLayer, 2)
self.bg2Sprite2:setAnchorPoint(ccp(0, 0))
self.bg2Sprite2:setPosition(self.bg2Sprite2:getContentSize().width - 2, 0)

滚动:
–背景1的2层移动
local function background2Move()
self.bg2Sprite2:setPositionX(self.bg2Sprite1:getPositionX() + self.bg2Sprite1:getContentSize().width - 1)
self.bg2Sprite1:setPositionX(self.bg2Sprite1:getPositionX() - 1)
if self.bg2Sprite2:getPositionX() == 0 then
self.bg2Sprite1:setPositionX(0)
end
end

local function onScheduler(dt)
    background2Move()
end

scheduler.scheduleGlobal(onScheduler, 0.01)

我的理解是因为bg2Sprite1往左移之后,bg2Sprite2要慢一步移动,所以就出现间隔。

两张图之间使用一两个像素的重合吧

这个有做啊。代码就是这样做的,但是不成功~

你的代码看着有些疑问,两张图片是一样宽的吗?还有这里:self.bg2Sprite2:setPositionX(self.bg2Sprite1:getPositionX() + self.bg2Sprite1:getContentSize().width - 1),如果都是移一个像素,没必要用另一个精灵的位置来再定位一次吧,自己原来的位置减1不就行了吧?

因为如果在原来的位置-1,当它本身已经移到最左边了,那就不会再重复出现了。

    if self.bg2Sprite2:getPositionX() == 0 then 
        self.bg2Sprite1:setPositionX(0) 
    end

上面的代码是当2的X移到0的时候,1就会再出现在场景当中,而2也会接到1的最后面。

1和2是同一张图片来的。

你先不考虑重复出现,平移一下看有没有间隔。另外可以把速度调慢些把拼接效果看仔细些

还是有间隔~唉,看不出来到底哪里出错了~~~

没道理啊,是不是原来拼接的效果就是不对的?你不移动的话,显示是怎么样的效果?现在是重叠了两个像素吧?多重叠一点又是什么效果?

我就是重叠一个像素做的。就OK了。

我也好纠结啊

    if self.bg3Sprite1:getPositionX() == -300 then 
        print(self.bg3Sprite1:getPositionX() + self.bg3Sprite1:getContentSize().width)
        print(self.bg3Sprite2:getPositionX())
        --self.bg3Sprite2:setPositionX(self.bg3Sprite1:getPositionX() + self.bg3Sprite1:getContentSize().width - 2)

        return false 
    end

我加了这个代码调试, 两个print 都是836的时候,还是会出现缝隙。郁闷~~~按理说不应该啊~
1的最右边是836,2的起点也是836.。。

----PS:用iphone5s调试没出现这个缝隙了!!!

再经过几次测试,原来是。。。

command + 6 把屏幕缩小至75% 就会有缝隙!!!

能找到问题就好。