2012-03-29 73 views
2

實施例:MAX在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; 

注意這是在NSObject的定義的MAX。我仍然模糊不清。我試圖在文本文檔中查找它,但沒有得到相關結果。

同樣,ccp只是採取兩個座標,並將它們保存到一個點?

E.G.

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

謝謝!

+0

它是一個*宏*,它接受兩個表達式,對它們進行求值並返回兩個較大的值。 – dasblinkenlight 2012-03-29 19:27:02

回答

7

MAX只是返回括號中項目的最大值。例如,MAX(5,3)將返回5.如果x = 1且y = 10,則MAX(y,x)將返回y。

ccp是一個圍繞CGPointMake的包裝,它只是創建一個CGPoint,它由兩個值x和y組成,以創建2D座標。查看CGPointMake,因爲這正是ccp所在的位置。

1

在Xcode中保存命令並單擊該函數進行定義。

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

中共定義爲

#define ccp(__X__,__Y__) CGPointMake(__X__,__Y__) 

要看到它的所有定義保持命令的文件,然後單擊功能。 Xcode會循環這個符號。