我想通过使用自定义初始化方法来继承SKNode类。 我定制的init方法看起来是这样的:使用自定义初始化方法的SKNode子类
//interface
@interface BlocksLayer : SKNode
-(instancetype)initWithDirection(BlocksLayerMotionDirection)direction;
@end
//implementation
-(instancetype)initWithDirection:(BlocksLayerMotionDirection)direction{
self=[super init];
if (self) {
self.direction=direction;
[self makeLayer];
}
return self;
}
-(void)makeLayer{
//scene size has always width=0 and height=0
NSLog(@"%f",self.scene.size.width);
NSLog(@"%f",self.scene.size.height);
}
当我初始化我的自定义方法scene.width和scene.height类始终为零。
相反,如果我使用静态节点方法初始化,则scene.size包含有效值。
你有什么想法是什么问题?
这是继承SKNode的正确方法吗?它是实现非静态自定义初始化方法的有效策略吗?
非常感谢,
多梅尼科
你确定'SKNode'包含'SKScene'吗?我很确定这是另一种方式......你正在阅读的值可能只有在添加到场景后才有效,或者你可以传递一个宽度和高度来使用。 – Gliderman
非常感谢您的回答。 当然,主SKScene是好的,因为我有其他自定义SKNode与静态节点方法初始化,我没有与他们的问题。 看来,当我不调用静态节点方法(例如[MyNode节点])作为初始化时,scene.size它将在initWithSize场景方法后可用。 –