私は頻繁に呼び出す[[CCDirector sharedDirector] winSize]
ので、winSize() の行に沿ってマクロを作成したいと思っています。これを Cocos2D のライブラリに入れるのに適した場所はどこでしょうか? 最初は、Support>CGPointExtension.h が機能する可能性があると考えていましたが、その場所では ccdirector が定義されていません。何か案は?
質問する
194 次
2 に答える
3
これはどう?
#define WINSIZE [[CCDirector sharedDirector] winSize];
個人的には、これにはマクロを使用しません。より良い代替手段は、winSize が頻繁に必要なクラスに ivar または static var を追加することです。
于 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;
.m で
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 に答える