グラフィックスに大きなピクセルアートを使用するゲームを作っています。スプライトごとにsprite.scale = 2;
と[sprite.texture setAliasTexParameters];
を宣言しなければならないので、私はファクトリメソッドを作ることにしました。私はそれを働きましたが、何らかの理由でそれはいくつかの状況でプログラムをクラッシュさせます。私のファクトリメソッドが意図した通りに動作していません
これは.Mファイルに私の工場コードです:
@implementation pixelSprite
+ (id) spriteFromFrame:(NSString *)frame setScale:(BOOL)scale resetAnchor:(BOOL)reset {
CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:frame];
[sprite.texture setAliasTexParameters];
if (scale) {sprite.scale = 2;}
if (reset) {sprite.anchorPoint = ccp(0, 0);}
return sprite;
}
@end
そして、この.hファイルから:
@interface pixelSprite : CCSprite {}
+ (id)spriteFromFrame:(NSString*)frame setScale:(BOOL)scale resetAnchor:(BOOL)reset;
@end
私はこのようにそれをボタンスプライトを作り、それが完璧に動作します。
CCSprite *bg3 = [pixelSprite spriteFromFrame:@"bgMenu3.png" setScale:TRUE resetAnchor:FALSE];
//bg3.anchorPoint = ccp(0.5, 0);
bg3.position = ccp(240, 210);
[self addChild:bg3 z:1];
私はスプライトの工場を使用していたものをの.mファイル内の.hファイルが含まれました。例えば、これはプログラムをクラッシュするいくつかの理由
CCSprite *spriteCampaign1 = [pixelSprite spriteFromFrame:@"buttonCampaign1.png" setScale:FALSE resetAnchor:FALSE];
。
ありがとうございます。間違いは、スプライトシートの個々の画像とフレームを使用して、同じ方法をスプライトに使用しようとしたことです。本当にダミーの間違い。 – Liuhu