我想通過使用自定義初始化方法來繼承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場景方法後可用。 –