2014-02-15 50 views
3

我有一個相當簡單的動畫與8個相同大小的圖像。我沒有使用內置的動畫方法,因爲我想手動控制動畫的速度。我正在使用預加載的SKTexture並執行[object setTexture:texture];更新內部:currentTime方法。SKSpriteNode拉伸時手動動畫紋理

問題是,有時紋理會變形/拉伸。經過大量調試之後,我將其縮小到僅在節點靜止時發生。事實上,如果我移動節點的像素,它搬回這樣,問題永遠不會發生:

[self setTexture:texture]; 
CGPoint currentPosition = self.position; 
self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1); 
self.position = currentPosition; 

這種感覺非常哈克我。我認爲,它觸發了父節點上的重繪。有沒有其他人經歷過這個?我有兩個主要問題。 1)原因是什麼?和2)我怎樣才能解決這個問題,而不訴諸黑客?

這是一個正常的框架和拉伸版本(我的質量,佔位藝術道歉......)

not-stretched streched

編輯:一些意見後,我意識到,我忘了提到我縮放了節點的尺寸比紋理的尺寸更小。即使紋理大小相同,將較小尺寸的節點應用於新紋理也會導致該錯誤。

+0

其他人也有同樣的問題 - 這可能是SK的一個bug。也許這已經在ios 7.1 beta中修復了。 – LearnCocos2D

+0

嘗試添加[self setSize:texture.size]; –

+0

@DobroćudniTapir爲我工作。我更喜歡那個。我一直在縮放精靈,所以現在我每次應用紋理時都會重新縮放它。你想補充說,作爲答案,我可以接受它嗎? – nothappybob

回答

6

看來,在使用setTexture:精靈節點不改變它的大小設置紋理,直到被移動,調整大小,等等

您可以通過設置紋理後手動設置size解決此。

[spriteNode setTexture:texture]; 
[spriteNode setSize:texture.size];