2013-10-04 34 views
2

我有一個SKShapeNode和一個通用SKNode下的標籤。如果我嘗試縮放該節點,它的位置無理變化!如果我試圖縮放它所包含的節點,它可以正確縮放,但不能從中心縮放,因此它會向上和向右擴展。從中心縮放SKShapeNode?

我在做什麼錯? 首先規模 First before scale

規模 After scale

通知後,之前它的位置向上移動。無法弄清楚爲什麼,即使我將其作爲一項行動來做。另外,位置不改變基於日誌,但它出現在框架變得更大(雖然這是預期)

步驟重新創建問題:

一套高度和寬度 @h = 50 @w = 256

創建與矩形的高度和寬度 CGRectMake(0,0,@w,@h)爲矩形 UIBezierPath.bezierPathWithRect(矩形)

GET路徑.CGPath

創建路徑skshape節點,設置位置

antialiased: false, 
    lineWidth: 1.0, 
    strokeColor: SKColor.blackColor, 
    fillColor: SKColor.whiteColor 

創建sklabel,垂直居中對齊,設置位置

創建通用SKNode,沒有屬性,將其添加skshapenode和sklabel兒童

規模通用的SKNode。

+0

你能添加一張圖片來幫助描述你的問題嗎?你有沒有嘗試改變錨點? – DogCoffee

+0

似乎沒有SKShapeNode和SKNode的定位點。 – AwDogsGo2Heaven

+0

你能分享一些代碼嗎? – DogCoffee

回答

0

試試這個

SKLabelNode *labNode = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; 
labNode.fontSize = 12.0f; 
labNode.fontColor = [SKColor blackColor]; 
labNode.text = @"SMASH"; 


SKSpriteNode *topWithText = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(100, 30)]; 
topWithText.position = CGPointMake(100, 110); 
[topWithText addChild:labNode]; 

SKSpriteNode *bottom = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(100, 10)]; 
bottom.position = CGPointMake(100, 100); 

[self addChild:topWithText]; 
[self addChild:bottom]; 

[topWithText runAction:[SKAction sequence:@[ 
             [SKAction waitForDuration:3.0], 
             [SKAction scaleBy:3.0 duration:3] 
             ]]]; 
+0

同樣的問題令人遺憾的是,我試圖得到一個屏幕截圖(不知道它是否會幫助,雖然) – AwDogsGo2Heaven

+0

無法弄清楚爲什麼你的擴展權和我的不擴展。我把我的位置搞亂了,我爲SKNode而不是它的孩子設置了位置,現在它從右下角向上和向右縮放。我可以用你說的方法嘗試SKSpriteNode。 – AwDogsGo2Heaven

+0

你不能製作圖像與「粉碎」等?你爲什麼決定按你的方式去做。 – DogCoffee

0

我有一個類似的問題:我創建了一個SKShapeNode.ellipseInRect看起來完全正常時,我並不需要它的規模。然而,只要我試圖縮小它以適應它背後的文字,它會隨機向屏幕左下方縮小!

我做了一些調試,讓我感到驚訝的是,即使橢圓在屏幕的左上角,位置也被設置爲(0,0)!然後我意識到,通過使用矩形進行初始化,「錨點」(即使SKShapeNodes技術上沒有它們)也處於(0,0)。這種行爲可以解釋我朝這一點收縮,並且你從這一點開始不斷增長。

對我來說,解決這個問題的方法不是把我的位置放在矩形中,而是在之後設置位置。然後它縮放我的節點的中心點而不是屏幕原點。希望有所幫助!