Зацикливание движущегося фона цель-C - PullRequest
3 голосов
/ 02 октября 2011

Я тестирую анимацию фонового цикла, где изображения будут иметь размеры 1024x768 пикселей, двигаться влево, выходить за экран, затем переходить на другую сторону и повторяться.сделать это путем создания постоянной скорости для обоих фоновых изображений для перемещения (успешно), а затем я попытался следующий код, чтобы заставить его перескочить, но была проблема:как я и ожидал.Это оставляет несколько пикселей разрыва каждый раз, и я не понимаю, почему.Кто-нибудь знает, что является причиной этого и как это исправить?Спасибо!

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Кажется, вы забыли принять во внимание пройденное расстояние.Выражение больше, чем могло быть вызвано, потому что вы перешли в дальний.Я предполагаю, что ваше движение превышает 1 пиксель / кадр.

Я не уверен, какие значения питают ваше движение, но я думаю, что для учета движения вы должны сделать что-то вроде ...

 if ((background.center.x) < -511){
    CGFloat dist = background.center.x + 512;
    background.center = CGPointMake(1536+dist, background.center.y);
 }

 if ((background2.center.x) < -511){
    CGFloat dist = background2.center.x + 512;
    background2.center = CGPointMake(1536+dist, background2.center.y);
 } 
0 голосов
/ 02 октября 2011

Вместо того, чтобы два изображения двигались (вроде) независимо, я бы отслеживал одну переменную backgroundPosition, а затем постоянно обновлял положение обоих изображений относительно этой одной позиции. Это должно держать все красиво и аккуратно:

CGFloat const backgroundWidth = 1024;
CGFloat const backgroundSpeed = 2;

- (void)animateBackground {
    backgroundPosition -= backgroundSpeed;
    if (backgroundPosition < 0) {
        backgroundPosition += backgroundWidth;
    }
    background1.center.x = backgroundPosition - backgroundWidth/2;
    background2.center.x = backgroundPosition + backgroundWidth/2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...