2013-03-14 81 views
0

我幾乎已經讀取了有關定位點和縮放的所有信息。當我縮放它時,我仍然不知道精靈位置正在發生什麼。CCSprite在使用CCScaleToTo或CCScaleBy時移動

的情況是這樣的:

,當我在屏幕上點擊,精靈的寬度將減少約50%和高度將增加大約相同的比例。然後它將恢復到正常的規模。

id scaleUpAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:0.5 scaleY:1.5] rate:1.0]; 
id scaleDownAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.0 scaleY:1.0] rate:1.0]; 
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil]; 
[self.boxShape runAction:scaleSeq]; 

我不明白爲什麼縮放使「精靈」「移動」。

如果我在屏幕上的位置(100,100)有一個大小爲40x60的精靈,當我縮小它時,它向左移動。爲什麼?

謝謝。

+1

'scaleX:0.5 scaleY:1.5':這不是每個方向的50%。這在X方向上減少了50%,但是在Y方向上只減少了33%。你可能想要'scaleY:2.0' – 2013-03-14 13:37:45

+0

那就對了。 :) – Quaso 2013-03-14 14:19:38

回答

0

一般來說,當縮放空間時,總是有一個點留在它的位置,其他點則移動。對於CCNode而言,這一點是定位點。因此,選擇要保留的節點上的點並使其成爲定位點

+0

我已經設置錨點(0.5f,0.5f)這意味着ccnode的中心。 (我認爲錨點的默認也是一樣的)。 – Quaso 2013-03-14 14:25:17

0

也許圖像的定位點不位於圖形的質心處。在下一張圖片中,您應該將定位點設置爲紅點,ccp(0.85,0.5)。

Image: Anchor Point, Moon, center of mass

如果你的定位點位於中心(0.5,0.5),當上圖水平縮放那麼它會移動到左邊(僅在視覺上!)。

這是你的問題?

+0

我解決了我的問題。在我的情況下,當精靈的座標發生變化時,背景會根據精靈的新座標移動。每次精靈動畫(縮放)時,其身體位置也會改變。我認爲它縮小時會向左移動。但實際情況是背景移動正確。對我感到羞恥:) – Quaso 2013-03-15 15:02:48