这似乎是SpriteKit的一大失败。
我有一堆动画精灵,他们有这样的类:
- (id)init {
self = [super init];
if (self) {
NSMutableArray *images=[NSMutableArray arrayWithCapacity:14];
for (int i=1; i<=14; i++) {
NSString *fileName=[NSString stringWithFormat:@"boat%d.png",i];
SKTexture *tempTexture=[atlas textureNamed:fileName];
[images addObject:tempTexture];
}
NSUInteger numberOfFrames = [images count];
SKAction *animate = [SKAction animateWithTextures:images timePerFrame:1.0f/numberOfFrames resize:YES restore:NO];
SKAction *forever = [SKAction repeatActionForever:animate];
[self runAction:forever];
}
return self;
}
所有类都是SKSpriteNode类的子类。
在某些时候我想得到精灵框架,高度或其他什么,然后我做
MySprite *sprite = [[MySprite alloc] init];
CGRect frame = sprite.frame; // frame returned is (0,0,0,0)
// or you may think
CGRect frame2 = [sprite calculateAccumulatedFrame]; // frame returned is (0,0,0,0)
// or you may also suggest
CGSize size = sprite.texture.size; // result is (0,0)
或者换句话说,没有办法获得该精灵的框架或尺寸。
所以,除非我在sprite初始化时创建代码以读取一个图像的大小并将其存储在属性上,否则我会被搞砸。
我错过了什么吗?
答案 0 :(得分:1)
MySprite *sprite = [[MySprite] init];
此外,您忘记添加alloc方法调用。
你的帧是(0,0,0,0)&#39;因为你没有在初始化过程中为你当前的精灵设置当前纹理,所以它是0,0,0,0。