【发布时间】:2015-10-15 15:34:24
【问题描述】:
我正在尝试使用自定义 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 始终为零。
相反,如果我使用静态 node 方法初始化,scene.size 包含有效值。
你知道有什么问题吗?
这是子类化 SKNode 的正确方法吗?它是实现非静态自定义初始化方法的有效策略吗?
非常感谢,
多梅尼科
【问题讨论】:
-
您确定
SKNode包含SKScene吗?我很确定情况正好相反...您正在读取的值可能仅在添加到场景后才有效,或者您可以只传递宽度和高度以供使用。 -
非常感谢您的回答。当然主 SKScene 没问题,因为我有其他自定义 SKNode 用静态节点方法初始化,我对它们没有问题。看来当我不调用静态节点方法(例如[MyNode节点])作为初始化时,在initWithSize场景方法之后它的scene.size就可用了。
标签: ios objective-c sprite-kit sknode