0

Cocos2D for iPhone でゲームを作っています。次の式は、コードのいくつかの場所に表示されます。

CGFloat screenCenter = [CCDirector sharedDirector].winSize.width / 2.0;

これを定数ファイルなどに入れ、式があちこちで繰り返されないようにしたいと思います。1つのアイデアは、置くことです

#define SCREEN_CENTER [CCDirector sharedDirector].winSize.width / 2.0

Constants.h必要に応じてインポートします。ただし、Objective-Cstatic constである程度使用する方がスタイル/プラクティスが優れているという印象を受けています。

screenCenterを使用して 1 か所だけで宣言しstatic const、必要に応じてコード全体で再利用するにはどうすればよいですか?

これの潜在的な利点の 1 つは、画面の中心が計算されるたびに除算を行うのではなく、1 回だけ除算を行うことです。

4

1 に答える 1

3

これはコンパイル時の式ではないため、にすることはできませんstatic const

を保持したい場合は#define、その周りに親をラップする必要があります。そうしないと、微妙なバグが発生する可能性があります。

インライン関数の使用を検討することもできます

inline CGFloat screenCenter() {
    return [CCDirector sharedDirector].winSize.width / 2.0f;
}

または、直接ぶら下げることもできますCCDirector。そのクラスを所有していないと仮定すると、カテゴリを使用できます

@interface CCDirector (FunkyStuff)
- (CGFloat)screenCenter;
@end

@implementation CCDirector (FunkyStuff)
- (CGFloat)screenCenter {
    return self.winSize.width / 2.0f;
}
@end

...
x = [[CCDirector sharedDirector] screenCenter];

利便性を高めるために、クラスメソッドにすることもできます。

于 2012-10-12T19:03:44.360 に答える