Почему это приложение для iPhone отстает, когда я "прокручиваю"? - PullRequest
1 голос
/ 13 июля 2010

Я разрабатываю игру типа «прыжок в каракули», и у меня есть 5 платформ на экране одновременно.Есть два фоновых UIImageViews.У меня есть функция «scrollUp», которая вызывается, когда игрок находится в верхних 3/4 экрана.Когда видны фоны, игра замедляется и отстает, когда фоны не видны (выкинуты), игра работает плавно и нормально.Я попытался отключить реальный код, который заставлял их двигаться, и он все еще отставал, фоновые изображения - оба png, которые я создал в photoshop, и каждое в отдельном UIImageView.

Вот код функции «scrollUp»: (запомните, это target-c с использованием Xcode для iphone):

-(void)scrollUp {
    if(fireball.center.y < scrollLine) {
    //sets up variables for background movement to add to.
    float oldXB1 = background1.center.x;
    float oldYB1 = background1.center.y;
    float oldXB2 = background2.center.x;
    float oldYB2 = background2.center.y;

         //makes "players" velocity go in the downward direction (disregard for question)
    velocity.y += .25;

    //sets up a for loop which tests each platform individually
         //[platformHolder] holds all 5 platforms
    for (int i = 0; i < [platformHolder count]; i++) {
    UIImageView *temp = (UIImageView *)[platformHolder objectAtIndex:i];
    if(fireball.center.y > 0) {
        temp.center = CGPointMake(temp.center.x, temp.center.y + 4);
    }
    if(fireball.center.y < 0) {
        temp.center = CGPointMake(temp.center.x, temp.center.y + 8);
        velocity.y += .03;
    }
    if(temp.center.y >  480) {
        scoreNum += 10;
        score.text =[NSString stringWithFormat:@"Score: %i", scoreNum];
        temp.center = CGPointMake(arc4random() % randomNumMax, 0);
    }
    }

    if(fireball.center.y > 0) {
        background1.center = CGPointMake(oldXB1, oldYB1 + velocityB1.y);
        background2.center = CGPointMake(oldXB2, oldYB2 + velocityB2.y);
    }

    if(fireball.center.y < 0) {
        background1.center = CGPointMake(oldXB1, oldYB1 + velocityB1.y);
        background2.center = CGPointMake(oldXB2, oldYB2 + velocityB2.y);
    }

    if(background1.center.y > (480 + background1.center.y/2)) {
        background1.center = CGPointMake(background1.center.x, -1*background1.center.y );
    }
    if(background2.center.y > (480 + background2.center.y/2)) {
         background2.center = CGPointMake(background2.center.x, -1*background2.center.y );
    }       
    }
}
...