Я делаю игру, которая использует большие пиксельные рисунки для графики. Поскольку мне нужно было бы объявить 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 *spriteCampaign1 = [pixelSprite spriteFromFrame:@"buttonCampaign1.png" setScale:FALSE resetAnchor:FALSE];
По какой-то причине это, например, приведет к сбою программы:
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];
Я включил файл .h в те файлы .m, которые хотел использовать фабрику спрайтов.