私は SpriteKit で遊んでいて、おそらく非常にばかげた間違いに唖然としています。私はそのように宣言されたSKSpriteNode、Fishを拡張しています:
@interface Fish : SKSpriteNode
@property BOOL direction;
@property FishSize fishSize;
+ (id) spriteNodeWithImageNamed : (NSString *) name;
- (id) initWithImageNamed :(NSString *)name;
- (void) setSize:(FishSize)s;
@end
spriteNodeWithImageNamed クラス メソッドを次のようにオーバーライドします。
+ (id) spriteNodeWithImageNamed : (NSString *) name
{
Fish * f = [super spriteNodeWithImageNamed : name];
f.direction = right;
f.fishSize = SmallSize;
return f;
}
スプライトがロードされないため、これは間違っています。一方、通常の SKSpriteNode で spriteNodeWithImageNamed メソッドを呼び出すと、問題なく動作します。
//this gets initialized to the proper size
SKSpriteNode * node = [SKSpriteNode spriteNodeWithImageNamed:picName];
// this is initialized to size (0,0)
Fish * fish = [Fish spriteNodeWithImageNamed:picName];
私は何を間違っていますか?