Сокращение повторяющегося кода Cocos2D? - PullRequest
0 голосов
/ 23 января 2012

В настоящее время я пытаюсь проверить границы экрана, проверяя, пересек ли CCSprite верх или низ экрана. Дело в том, что я действительно хочу объединить приведенные ниже операторы if в оператор 1 . В любом случае, единственное, что мне нужно сделать, это следующее. То, что я делаю ниже, это смещение точки CCSprite 1 внутрь, чтобы обеспечить фактическую границу экрана. Но я просто не понимаю, как я могу это сделать с помощью одного оператора if.

В любом случае, вот метод:

- (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 ]

2 голосов
/ 23 января 2012
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 голосов
/ 23 января 2012
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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...