2015-11-04 57 views
0

我在項目中已經有了一些代碼,但是我想稍微改變它。目前,我的代碼創建了一個名爲_buttonLayer的空節點,然後創建一些按鈕添加到它。我的按鈕從_buttonLayer的左上角開始,然後一直添加到右下角。Objective-C SpriteKit - 如何製作按鈕圈

// Set up button layer. 
_buttonLayer = [SKNode node]; 
_buttonLayer.position = CGPointMake(_centerOfScreen.x - (_buttonSize.width * 1.5) - 5.0, 
            self.size.height - ((self.size.height * 0.375) + (_buttonSize.height) - 50.0) + 5.0); 
[self addChild:_buttonLayer]; 


// Set up button array. 
_buttonArray = [NSMutableArray array]; 


// Add some buttons. 
for (char row = 0; row < 4; row++) { 
    for (char col = 0; col < 4; col++) { 

     // Buttons. 
     SKSpriteNode *button = [SKSpriteNode spriteNodeWithImageNamed:@"LightGreyButton"]; 
     button.name = @"LightGreyButton"; // Initially set it to grey, because they all start off that way. 
     button.size = _buttonSize; 
     button.position = CGPointMake(2.0 + ((button.size.width + 3.0) * col), 
             -(2.0 + ((button.size.height + 3.0) * row))); 
     [_buttonLayer addChild:button]; 
     [_buttonArray addObject:button]; 

    } 
} 

所以我現在需要做的是創建一個圓形的按鈕 - 而不是在一個正方形。我想以某種方式將按鈕添加到一個圓的輪廓,然後採取整個_buttonLayer並旋轉它。當然,我現在的方式是,它在廣場的左上角旋轉。我想要圓的中間旋轉。

我該怎麼做呢?

回答

2

更改for循環到這一點:

int numberOfButtons = 4; // The number of buttons you want. 
int radiusOfCircle = button.size.width*4; // The radius of the circle that will contain those buttons. 

for (int i = 0; i < numberOfButtons; i++) { 

    // Buttons. 
    SKSpriteNode *button = [SKSpriteNode spriteNodeWithImageNamed:@"LightGreyButton"]; 
    button.name = @"LightGreyButton"; // Initially set it to grey, because they all start off that way. 
    button.size = _buttonSize; 
    CGFloat angle = 2*M_PI/numberOfButtons * i; 
    button.position = CGPointMake(radiusOfCircle*cos(angle),radiusOfCircle*sin(angle)); 
    [_buttonLayer addChild:button]; 
    [_buttonArray addObject:button]; 
} 

而且,Darvydas建議,如果要繞一個一個sprite某些CGPoint centerOfRotation,設置sprite.anchorPoint = centerOfRotation;

請記住,我已經寫了這個沒有測試(我現在更多地使用Swift比Objective-C)。但我認爲它應該工作......是嗎? :)

+0

謝謝@RoberRM!這應該肯定會幫助我。我會嘗試一下,讓它知道它是否有效。 –

+0

它似乎確實對你有幫助。我很高興。 :)祝你好運! – RoberRM

0

,使各節點一輪SKSpriteNode而不是你應該使用SKShapeNode

SKShapeNode* button = [SKShapeNode node]; 
[button setPath:CGPathCreateWithRoundedRect(CGRectMake(-50, -50, 100, 100), 50, 50, nil)]; 

製作按鈕,在這裏填寫無形

button.fillColor = [UIColor clearColor]; 

更改輪廓寬度

button.lineWidth = 100 

更多信息: https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKShapeNode_Ref/index.html

要轉動你的節點周圍中心設置anchorPoint到您的節點中心

+0

感謝您的回覆,但您誤解了我的問題。我不需要製作一個圓圈的輪廓。我需要在圓形路徑上添加一組精靈,而不是我問題中給定代碼創建的方形路徑。 –

+0

@ChristianKRider ups,你有沒有檢查過RobertRM的答案?我認爲他給了你很好的回答:) – Darvydas

+0

是的,我有! :) –