2016-01-17 77 views
-3

我發現一些代碼可以幫助我創建一個可以在按下時動畫的按鈕。但它是在objective-c上。通常我可以理解這段代碼的內容,但我無法在swift上正確翻譯它。請幫我快速翻譯它。非常感謝。SpriteKit中的按下按鈕

1.

- (SKSpriteNode *)fireButtonNode 
{ 
    SKSpriteNode *fireNode = [SKSpriteNode spriteNodeWithImageNamed:@"fireButton.png"]; 
    fireNode.position = CGPointMake(fireButtonX,fireButtonY); 
    fireNode.name = @"fireButtonNode"; 
    fireNode.zPosition = 1.0; 
    return fireNode; 
} 

2.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInNode:self]; 
    SKNode *node = [self nodeAtPoint:location]; 

if ([node.name isEqualToString:@"fireButtonNode"]) { 
    } 
} 
+0

@Tigr先生哦,我同意IInspectable所說的一切。我爲你做了一個例子,因爲它不需要太多時間,尤其是因爲我注意到你是一個新成員,但包含迄今爲止嘗試的內容以顯示解決問題的努力總是更好的主意問題。這樣,你不會冒着被低估的風險。 – Whirlwind

回答

0

在斯威夫特:

func getFireButtonNode()->SKSpriteNode{ 

     let fireButtonX = CGRectGetMidX(frame), fireButtonY = CGRectGetMidY(frame) 

     let fireNode = SKSpriteNode(imageNamed: "fireButton") 
     fireNode.position = CGPoint(x: fireButtonX, y: fireButtonY) 
     fireNode.name = "fireButtonNode" 
     fireNode.zPosition = 1.0 

     return fireNode 

    } 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     if let touch = touches.first { 


      let location = touch.locationInNode(self) 

      let node = nodeAtPoint(location) 

      if node.name == "fireButtonNode" { 
       //do your stuff here 
      } 
     } 

    } 

注意變量fireButtonXfireButtonY永遠不會在你的代碼示例初始化。您可以在getFireButtonNode定義它們,像我一樣,或者你可以打電話時getFireButtonNode方法,這樣它們作爲參數傳遞:

func getFireButtonNode(xPos:CGFloat, _ yPos:CGFloat)->SKSpriteNode{} 

,並調用它是這樣的:

getFireButtonNode(100,100) 

如果你想這樣稱呼它:

getFireButtonNode(xPos:100, yPos:100) 

你必須明確地定義外部和當地的參數名稱,如:

func getFireButtonNode(xPos x:CGFloat, yPos y:CGFloat)->SKSpriteNode{} 

其中xPos(以及yPos)是外部參數名稱,當您調用該函數時,它將用作參數名稱。 x和y是本地參數,您可以在函數體中使用它們。

0

你看過蘋果演示項目「DemoBots」嗎?他們有一個按鈕幫手。

https://developer.apple.com/library/ios/samplecode/DemoBots/Listings/DemoBots_Nodes_ButtonNode_swift.html#//apple_ref/doc/uid/TP40015179-DemoBots_Nodes_ButtonNode_swift-DontLinkElementID_62

另一個簡單的例子

http://nathandemick.com/programming/tutorial/2014/09/23/buttons-sprite-kit-using-swift.html

最後一個GitHub的項目。

https://github.com/nguyenpham/sgbutton

在我個人的比賽,我使用一些調整是有關我的蘋果演示機器人的例子。這個課程也有助於tvOs關注的東西。