2012-01-23 8 views
0

現在、CCSpriteが画面の上部または下部を横切っているかどうかを確認して、画面の境界を確認しようとしています。事は、私は実際には、以下の2つのif文をに組み合わせたいと思っています。とにかく私がやらなければならない唯一の難しいことは次のとおりです。以下では、実際の画面境界を強制するためにCCSpriteを1ポイント内側に移動します。しかし、私はif文でどのようにできるのか分かりません。とにかくここ重複するCocos2Dコードを減らすには?

はメソッドです:

- (void)checkScreenBoundaries { 
    CGSize size = [[CCDirector sharedDirector] winSize]; 
    if (sprite.position.y <= 0) { 
     sprite.position = ccp(sprite.position.x, 1); 
     died = YES; 
    } else if (sprite.position.y >= size.height) { 
     sprite.position = ccp(sprite.position.x, size.height - 1); 
     died = YES; 
    } 
} 

誰もが、私は1にこれら二つの場合のを組み合わせることができますどのように私を見ることができますか?

ありがとうございます!

答えて

2
CGFloat yNew = MAX(1, MIN(sprite.position.y, size.height - 1)); 
if (yNew != sprite.position.y) { 
    sprite.position = ccp(sprite.position.x, yNew); 
    died = YES; 
} 
2
if ((sprite.position.y <= 0) || (sprite.position.y >= size.height)) { 
    sprite.position = ccp(sprite.position.x, (sprite.position.y <= 0) ? 1 : (size.height - 1)); 
    died = YES; 
} 
+0

私はあなたの方法を投票したが、読みやすいので、私はより良い他の回答者のコードが好きです。とにかく、ありがとう! :P –

+1

はい、より理解しやすく、 'yNew'をキャッシュしていますが、より多くのコード行があります:) – brigadir

関連する問題