如何使用带触摸的Cocos2d垂直滚动背景?

时间:2012-03-04 23:23:50

标签: background scroll cocos2d-iphone touches

我非常接近这个想法,只需要最后一点(逻辑)。在下面的代码中,背景会垂直滚动(带触摸)并且向右移动(即向下)。

问题是当它超出背景图像的内容大小时不会停止滚动...

(CGPoint)boundLayerPos:(CGPoint)newPos {
CGSize winSize = [CCDirector sharedDirector].winSize;
CGPoint retval = newPos;
retval.y = -MAX(retval.y, -background.contentSize.height+winSize.height);
retval.y = -MIN(retval.y, 0);
retval.x = self.position.x;
return retval;
}

我也想知道如何使滚动看起来更自然......即。一种方法可以持续一段时间,但在TouchesEnded发生时放慢速度......

1 个答案:

答案 0 :(得分:0)

这个问题令人困惑,因为直觉上你的大脑认为前景正在移动,但实际上它是你需要移动的背景,好像前景正在移动......因此很容易迷失在x / y中, -x / y,x / -y,-x / -y组合。与他人沟通也有点混乱(即你的意思是“向上”还是你的意思是“向下”)......

对我来说,我需要前景在滚动时看起来向下,直到它到达底部。我意识到这意味着背景(自我)必须向上移动,直到达到最高点(1539.0),这意味着它现在显示背景图像的底部。我最终在我的tick / update方法中使用了以下内容并且它可以工作(即阻止任何进一步滚动):

if (self.position.y > 1539.0f) {

    //CCLOG(@"My position is greater than 1539");

    self.position = ccp(self.position.x, 1539.0f);

}

不确定如何使滚动看起来更自然,但是......