宏检索[[CCDirector sharedDirector] winSize];

时间:2013-03-29 16:58:55

标签: cocos2d-iphone

我发现自己经常打电话给[[CCDirector sharedDirector] winSize],我真的想按照winSize()的方式制作一个宏。哪里可能是把它塞进Cocos2D库的好地方?最初我认为支持> CGPointExtension.h可能有效,但在那个位置没有定义ccdirector。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这个怎么样?

#define WINSIZE [[CCDirector sharedDirector] winSize];

就个人而言,我不会为此使用宏,更好的选择是在经常需要winSize的类中添加一个ivar或static var。

答案 1 :(得分:0)

我通常将这些定义放在每个项目的.m / .h中。例如,在.h

extern float  kScreenWidth;                  // design width of the app (in points)
extern float  kScreenHeight;                 // design height of the app (in points)
extern CGSize kBattleMidPoint;
extern float  kLongTouch;
extern float  kTileWidth;
extern float  kTileHeight;
<。> <。>

float  kScreenWidth  = 480.0;
float  kScreenHeight = 320.0;
CGSize kBattleMidPoint;
float  kLongTouch    = .65f;
float  kTileWidth    = 40.;
float  kTileHeight   = 40.;

以及.m setter中的某个地方覆盖上述默认值。在CCDirector初始化之后,我打电话给他们一次。

+ (void)setScreenWidth:(float)screenWidth {

    kScreenWidth = screenWidth;
    if (screenWidth >= 568.0) {
        kDeviceType = deviceTypeIpodTall;
    }
}

+ (void)setScreenHeight:(float)screenHeight {

    kScreenHeight = screenHeight;
}   

+ (void)setBattleMidPoint:(CGSize)midPoint {

    kBattleMidPoint = midPoint;
}

+ (void)setTileWidth:(float)tileWidth {

    kTileWidth = tileWidth;
}

+ (void)setTileHeight:(float)tileHeight {

    kTileHeight = tileHeight;
}

最后,我在我的预编译头文件中包含.h。我倾向于避免(以所有可能的代价)修改/扩展cocos2d代码库,保留以最小的工作量更新的权利:)。