2014-02-25 30 views
0

我有一個具有重寫的xScale setter的自定義節點。例如:[SKAction scaleXTo:duration:]爲什麼不調用xScale setter?

-(void)setXScale:(CGFloat)xScale 
{ 
    [super setXScale:xScale]; 
    NSLog(@"Scale changed to: %f", xScale); 
} 

如果我手動設置xScale屬性,那麼我可以看到setter被觸發。

然而,如果我通過一個動作,例如:縮放節點

[myCustomNode runAction:[SKAction scaleXTo:2.0f duration:0.5f]]; 

則即使節點被正確縮放,設置器永遠不會調用。

有人知道爲什麼不? SKScale操作如何改變節點的規模?

回答

4

內部Sprite工具包使用C++渲染引擎。我的觀察是,SKAction完全繞過了Objective-C層,而是直接在C++類上改變屬性。可能會改善行動的表現。

如果您想要觀察這些變化,請使用customActionWithDuration:actionBlock:操作,該操作通過塊設置節點的屬性。或者您可以繼承該節點的子類,添加previousScale屬性,並通過將其與previousScale屬性進行比較來定期檢查原始比例是否已更改。

+0

感謝您的回答。很高興知道這不僅僅是我在文檔中遺漏的東西。 –

相關問題