2012-03-29 9 views
2

Beispiel:Was macht MAX in Objec-C/cocos2d?

CGSize winSize = [[CCDirector sharedDirector] winSize]; 
int x = MAX(position.x, winSize.width /2); 
    int y = MAX(position.y, winSize.height /2); 
    x = MIN(x, (_tileMap.mapSize.width * _tileMap.tileSize.width) 
      - winSize.width /2); 
    y = MIN(y, (_tileMap.mapSize.height *_tileMap.tileSize.height) 
      -winSize.height/2); 
    CGPoint actualPosition = ccp(x, y); 

    CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2); 
    self.position = centerOfView; 

Notiere der MAX, die in NSObject definiert ist. Ich bin immer noch unklar, was es macht. Ich habe versucht, es in der Textdokumentation nachzuschlagen, habe aber kein relevantes Ergebnis erhalten.

Ähnlich nimmt ccp nur zwei Koordinaten und speichert sie in einem Punkt?

E.G.

CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2); 

Vielen Dank!

+0

Es ist ein * Makro *, das zwei Ausdrücke akzeptiert, sie auswertet und den größeren Wert der beiden zurückgibt. – dasblinkenlight

Antwort

7

MAX gibt einfach den MAX-Wert der Elemente in Klammern zurück. Zum Beispiel würde MAX (5,3) 5 zurückgeben.

Wenn x = 1 und y = 10, dann würde MAX (y, x) y zurückgeben.

ccp ist ein Wrapper um CGPointMake und es erstellt einfach einen CGPoint, der aus zwei Werten, x und y, besteht, um eine 2D-Koordinate zu erstellen. Look up CGPointMake wie genau das ist ccp ist.

1

In Xcode halten Sie Befehl und klicken Sie auf die Funktion für ihre Definition.

#define MAX(A,B)({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; }) 

ccp als

definiert auf die Funktion
#define ccp(__X__,__Y__) CGPointMake(__X__,__Y__) 

Um die Datei zu sehen, wo es alle definierten Haltebefehl und klicken Sie auf. Xcode wird das Symbol durchlaufen.