Как прокрутить фон по вертикали, используя Cocos2d с Touches? - PullRequest
0 голосов
/ 05 марта 2012

Я довольно близок к тому, чтобы разобраться с этим, и мне просто нужен последний бит (логика). В следующем коде фон прокручивается по вертикали (касаниями) И движется в правильном направлении (то есть вниз).

Проблема в том, что прокрутка не прекращается, когда она выходит за рамки размера содержимого фонового изображения ...

(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 голосов
/ 28 марта 2012

Этот вопрос сбивает с толку, потому что ваш мозг интуитивно думает, что передний план движется, но на самом деле это фон, который вам нужно переместить, чтобы он выглядел так, как будто передний план движется ... следовательно, легко потеряться в х / у, -x / y, x / -y, -x / -y комбинации. Также немного сбивает с толку общение с другими (т.е. вы имели в виду «вверх» или «вниз») ...

Для меня мне нужно, чтобы передний план, казалось, шел вниз, когда он прокручивался, пока не достигал дна. Я понял, что это означало, что фон (self) должен был двигаться вверх, пока не достиг самой высокой точки (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);

}

Не уверен, как сделать прокрутку более естественной, однако ...

...