私は「落書きジャンプ」のようなゲームを開発しており、一度に 5 つのプラットフォームを画面に表示しています。2 つの背景 UIImageViews があります。プレーヤーが画面の上部 3/4 にいるたびに呼び出される「scrollUp」関数があります。背景が表示されている場合、ゲームの速度が低下してラグが発生します。背景が表示されていない場合 (スクロールして離れている場合)、ゲームはスムーズかつ正常に実行されます。それらを動かした実際のコードを無効にしようとしましたが、まだ遅れていました。背景画像は両方とも、Photoshop で作成した png であり、それぞれが個別の UIImageView にあります。
「scrollUp」関数コードは次のとおりです (これは iPhone 用の Xcode を使用した Objective-C であることを思い出してください)。
-(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 );
}
}
}