0
我正在制作一款游戏,它使用大像素艺术作为图形。因为我必须为每个精灵声明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];
我没有包括在这些.m文件我想用精灵工厂.h文件。
谢谢。错误是我试图使用相同的方法来使用spritesheet中的单个图像和帧。真的是虚假的错误。 – Liuhu 2012-03-05 14:53:58