0

我发现自己经常调用[[CCDirector sharedDirector] winSize],以至于我真的很想按照 winSize() 的方式制作一个宏。哪里可能是把它塞进 Cocos2D 库的好地方?最初我认为 Support>CGPointExtension.h 可能工作,但在那个位置 ccdirector 没有定义。有任何想法吗?

4

2 回答 2

3

这个怎么样?

#define WINSIZE [[CCDirector sharedDirector] winSize];

Personally I wouldn't use a macro for this, a better alternative is to add an ivar or static var to the class where you need winSize frequently.

于 2013-03-29T17:45:24.250 回答
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 设置器中的某个位置覆盖上述默认值。在 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 代码库,保留以最少的工作量进行更新的权利:)。

于 2013-03-29T17:07:42.873 回答