2015-02-10 105 views
-1

建議您閱讀我的代碼第一:我點擊不工作

// 
// PlaysScene.swift 
// Pocket Rocket3 
// 
// Created by Lucas Farleigh on 27/11/2014. 
// Copyright (c) 2014 Lucas Farleigh. All rights reserved. 
// 

import spriteKit 

class PlayScene:SKScene { 
    //declaring the node in this scene! 
    let background = SKSpriteNode(imageNamed: "background") 



    let bara = SKSpriteNode(imageNamed: "bar6") 
    let barb = SKSpriteNode(imageNamed: "bar6") 

    let barc = SKSpriteNode(imageNamed: "bar6") 
    let bard = SKSpriteNode(imageNamed: "bar6") 

    let bare = SKSpriteNode(imageNamed: "bar6") 
    let barf = SKSpriteNode(imageNamed: "bar6") 

    let barg = SKSpriteNode(imageNamed: "bar6") 
    let barh = SKSpriteNode(imageNamed: "bar6") 

    let bari = SKSpriteNode(imageNamed: "bar6") 
    let barj = SKSpriteNode(imageNamed: "bar6") 

    let bar1 = SKSpriteNode(imageNamed: "bar6") 
    let bar2 = SKSpriteNode(imageNamed: "bar6") 

    let bar3 = SKSpriteNode(imageNamed: "bar6") 
    let bar4 = SKSpriteNode(imageNamed: "bar6") 

    let bar5 = SKSpriteNode(imageNamed: "bar6") 
    let bar6 = SKSpriteNode(imageNamed: "bar6") 

    let bar7 = SKSpriteNode(imageNamed: "bar6") 
    let bar8 = SKSpriteNode(imageNamed: "bar6") 

    let bar9 = SKSpriteNode(imageNamed: "bar6") 
    let bar10 = SKSpriteNode(imageNamed: "bar6") 
    let missile1 = SKSpriteNode(imageNamed:"Missile") 
    let missile2 = SKSpriteNode(imageNamed:"Missile") 
    let missile3 = SKSpriteNode(imageNamed:"Missile") 
    let missile4 = SKSpriteNode(imageNamed:"Missile") 
    let missile5 = SKSpriteNode(imageNamed:"Missile") 
    let missile6 = SKSpriteNode(imageNamed:"Missile") 
    let missile7 = SKSpriteNode(imageNamed:"Missile") 
    let missile8 = SKSpriteNode(imageNamed:"Missile") 
    let missile9 = SKSpriteNode(imageNamed:"Missile") 
    let missile10 = SKSpriteNode(imageNamed:"Missile") 
    let missile11 = SKSpriteNode(imageNamed:"Missile") 
    let missile12 = SKSpriteNode(imageNamed:"Missile") 
    let missile13 = SKSpriteNode(imageNamed:"Missile") 
    let missile14 = SKSpriteNode(imageNamed:"Missile") 
    let missile15 = SKSpriteNode(imageNamed:"Missile") 
     let rocket = SKSpriteNode(imageNamed:"rocket") 
    let shape1 = SKSpriteNode(imageNamed:"rocket") 
    let shape2 = SKSpriteNode(imageNamed:"shape") 
    var isTouch1 = false 
    var isTouch2 = false 

     var actionmove = SKAction.moveToY(-150, duration: 15) 

    override func didMoveToView(view: SKView) { 
     shape1.position = CGPointMake(300,CGRectGetMidY(self.frame)) 
     shape2.position = CGPointMake(800,CGRectGetMidY(self.frame)) 
     addChild(shape1) 

     shape1.xScale = 8.5 
     shape1.yScale = 10.0 
     shape2.xScale = 8.5 
     shape2.yScale = 8.5 


     var delay = SKAction.waitForDuration(NSTimeInterval(1.5)) 
     var delchild = SKAction.removeFromParent() 
     var rand = arc4random_uniform(10) 
     missile1.yScale = 0.5 
     missile2.yScale = 0.5 
     missile3.yScale = 0.5 
     missile4.yScale = 0.5 
     missile5.yScale = 0.5 
     missile6.yScale = 0.5 
     missile7.yScale = 0.5 
     missile8.yScale = 0.5 
     missile9.yScale = 0.5 
     missile10.yScale = 0.5 

     let delayA = SKAction.waitForDuration(NSTimeInterval(2.0)) 
     let delayB = SKAction.waitForDuration(NSTimeInterval(4.0)) 
     let delayC = SKAction.waitForDuration(NSTimeInterval(6.0)) 
     let delayD = SKAction.waitForDuration(NSTimeInterval(8.0)) 
     let delayE = SKAction.waitForDuration(NSTimeInterval(10.0)) 
     let delayF = SKAction.waitForDuration(NSTimeInterval(12.0)) 
     let delayG = SKAction.waitForDuration(NSTimeInterval(14.0)) 
     let delayH = SKAction.waitForDuration(NSTimeInterval(16.0)) 
     let delayI = SKAction.waitForDuration(NSTimeInterval(18.0)) 
     let delayJ = SKAction.waitForDuration(NSTimeInterval(20.0)) 

     var missile1Hide = SKAction.runBlock({ 
     self.missile1.hidden = true 
     }) 

     var missile2Hide = SKAction.runBlock({ 
      self.missile2.hidden = true 
     }) 

     var missile3Hide = SKAction.runBlock({ 
      self.missile3.hidden = true 
     }) 

     var missile4Hide = SKAction.runBlock({ 
      self.missile4.hidden = true 
     }) 

     var missile5Hide = SKAction.runBlock({ 
      self.missile5.hidden = true 
     }) 

     var missile6Hide = SKAction.runBlock({ 
      self.missile6.hidden = true 
     }) 

     var missile7Hide = SKAction.runBlock({ 
      self.missile7.hidden = true 
     }) 

     var missile8Hide = SKAction.runBlock({ 
      self.missile8.hidden = true 
     }) 

     var missile9Hide = SKAction.runBlock({ 
      self.missile9.hidden = true 
     }) 

     var missile10Hide = SKAction.runBlock({ 
      self.missile10.hidden = true 
     }) 


     var missile1show = SKAction.runBlock({ 
      self.missile1.hidden = false 
     }) 

     var missile2show = SKAction.runBlock({ 
      self.missile2.hidden = false 
     }) 

     var missile3show = SKAction.runBlock({ 
      self.missile3.hidden = false 
     }) 

     var missile4show = SKAction.runBlock({ 
      self.missile4.hidden = false 
     }) 

     var missile5show = SKAction.runBlock({ 
      self.missile5.hidden = false 
     }) 

     var missile6show = SKAction.runBlock({ 
      self.missile6.hidden = false 
     }) 

     var missile7show = SKAction.runBlock({ 
      self.missile7.hidden = false 
     }) 

     var missile8show = SKAction.runBlock({ 
      self.missile8.hidden = false 
     }) 

     var missile9show = SKAction.runBlock({ 
      self.missile9.hidden = false 
     }) 

     var missile10show = SKAction.runBlock({ 
      self.missile10.hidden = false 
     }) 

     var position1 = SKAction.runBlock({ 

     self.missile1.position = CGPointMake(600,850) 
     }) 

     var position2 = SKAction.runBlock({ 

      self.missile2.position = CGPointMake(300,850) 

     }) 
     var position3 = SKAction.runBlock({ 

      self.missile3.position = CGPointMake(100,850) 

     }) 
     var position4 = SKAction.runBlock({ 

      self.missile4.position = CGPointMake(900,850) 

     }) 
     var position5 = SKAction.runBlock({ 

      self.missile5.position = CGPointMake(300,850) 

     }) 
     var position6 = SKAction.runBlock({ 

      self.missile6.position = CGPointMake(600,850) 

     }) 
     var position7 = SKAction.runBlock({ 

      self.missile7.position = CGPointMake(200,850) 

     }) 
     var position8 = SKAction.runBlock({ 

      self.missile8.position = CGPointMake(600,850) 

     }) 
     var position9 = SKAction.runBlock({ 

      self.missile9.position = CGPointMake(900,850) 

     }) 
     var position10 = SKAction.runBlock({ 

      self.missile10.position = CGPointMake(200,850) 

     }) 







     let sequence1 = SKAction.sequence([missile1Hide,delayA,position1,missile1show,actionmove]) 
     let sequence2 = SKAction.sequence([missile2Hide,delayB,position2,missile2show,actionmove]) 
     let sequence3 = SKAction.sequence([missile3Hide,delayC,position3,missile3show,actionmove]) 
     let sequence4 = SKAction.sequence([missile4Hide,delayD,position4,missile4show,actionmove]) 
     let sequence5 = SKAction.sequence([missile5Hide,delayE,position5,missile5show,actionmove]) 
     let sequence6 = SKAction.sequence([missile6Hide,delayF,position6,missile6show,actionmove]) 
     let sequence7 = SKAction.sequence([missile7Hide,delayG,position7,missile7show,actionmove]) 
     let sequence8 = SKAction.sequence([missile8Hide,delayH,position8,missile8show,actionmove]) 
     let sequence9 = SKAction.sequence([missile9Hide,delayI,position9,missile9show,actionmove]) 
     let sequence10 = SKAction.sequence([missile10Hide,delayJ,position10,missile10show,actionmove]) 

     let s1 = SKAction.sequence([position1,actionmove]) 
     let s2 = SKAction.sequence([position2,actionmove]) 
     let s3 = SKAction.sequence([position3,actionmove]) 
     let s4 = SKAction.sequence([position4,actionmove]) 
     let s5 = SKAction.sequence([position5,actionmove]) 
     let s6 = SKAction.sequence([position6,actionmove]) 
     let s7 = SKAction.sequence([position7,actionmove]) 
     let s8 = SKAction.sequence([position8,actionmove]) 
     let s9 = SKAction.sequence([position9,actionmove]) 
     let s10 = SKAction.sequence([position10,actionmove]) 

     let r1 = SKAction.repeatActionForever(s1) 
     let r2 = SKAction.repeatActionForever(s2) 
     let r3 = SKAction.repeatActionForever(s3) 
     let r4 = SKAction.repeatActionForever(s4) 
     let r5 = SKAction.repeatActionForever(s5) 
     let r6 = SKAction.repeatActionForever(s6) 
     let r7 = SKAction.repeatActionForever(s7) 
     let r8 = SKAction.repeatActionForever(s8) 
     let r9 = SKAction.repeatActionForever(s9) 
     let r10 = SKAction.repeatActionForever(s10) 




     //actionmove: making it smooth 

     //doing stuff with the background 
     background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) 
     background.yScale = 10.0 
     background.xScale = 10.0 
     addChild(background) 
     addChild(rocket) 
     rocket.yScale = 0.3 
     rocket.xScale = 0.6 




     addChild(missile1) 
     addChild(missile2) 
     addChild(missile3) 
     addChild(missile4) 
     addChild(missile5) 
     addChild(missile6) 
     addChild(missile7) 
     addChild(missile8) 
     addChild(missile9) 
     addChild(missile10) 


     self.missile1.runAction(sequence1, completion:{ 
      self.missile1.runAction(r1) 
     }) 

     self.missile2.runAction(sequence2, completion:{ 
      self.missile1.runAction(r2) 
     }) 

     self.missile3.runAction(sequence3, completion:{ 
      self.missile1.runAction(r3) 
     }) 

     self.missile4.runAction(sequence4, completion:{ 
      self.missile1.runAction(r4) 
     }) 

     self.missile5.runAction(sequence5, completion:{ 
      self.missile1.runAction(r5) 
     }) 

     self.missile6.runAction(sequence6, completion:{ 
      self.missile1.runAction(r6) 
     }) 

     self.missile7.runAction(sequence7, completion:{ 
      self.missile1.runAction(r7) 
     }) 


     self.missile8.runAction(sequence8, completion:{ 
      self.missile1.runAction(r8) 
     }) 


     self.missile9.runAction(sequence9, completion:{ 
      self.missile1.runAction(r9) 
     }) 


     self.missile10.runAction(sequence10, completion:{ 
      self.missile1.runAction(r10) 
     }) 
     rocket.position = CGPointMake(100, 200) 


     } 


    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     for touch: AnyObject in touches { 
      shape1.name = "shape1" 
      shape2.name = "shape2" 
      var moveright = SKAction.moveToX(rocket.position.x + 50, duration:10) 
      var moveleft = SKAction.moveToX(rocket.position.x - 50 , duration:10) 
      var location = touch.locationInNode(self) 
      let node = self.nodeAtPoint(location) 

       println("hello") 




     } 
    } 


    override func touchesEnded(touches: NSSet, withEvent event: UIEvent) { 
     for touch: AnyObject in touches { 
      var moveright = SKAction.moveToX(rocket.position.x + 5, duration:10) 
      var moveleft = SKAction.moveToX(rocket.position.x - 5, duration:10) 
      var location = touch.locationInNode(self) 
      let node = self.nodeAtPoint(location) 




     } 
    } 






} 

您好,我一直在努力了很長的時間做到這一點,我的問題是,當我點擊形狀1(你會了解你是否閱讀了代碼)當它應該打印出「你好」並且它沒有打印時它什麼也不做。我試圖改變圖像,但這並沒有改變任何東西。但是當我採用if語句並離開println,並且當我點擊它時打印出你好。 在此先感謝!

+1

其中是if語句? – rakeshbs 2015-02-10 14:31:48

+0

你有沒有考慮過使用[arrays](https://developer.apple.com/library/ios/documentation/General/Reference/SwiftStandardLibraryReference/Array.html)來存儲多個對象。這將允許你一次又一次地寫更少的相同的代碼,所以不太容易出錯。例如,你可以放:'var bars = [SKSpriteNode]()'然後在init do中爲我在0 .. <10 {bars.append(SKSpriteNode(imageNamed:「bar6」)}'然後訪問每個條'bars [0] .position = somePosition',其中0是數組中的第一個條。如果你搜索swift數組,你可以找到一些很好的教程來開始。 – Okapi 2015-02-11 18:54:57

回答

0

如果您有多個重疊的節點,觸摸某個特定節點可以通過搜索self.nodesAtPoint函數內部的節點來檢測。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    for touch in touches { 
     let location = touch.locationInNode(self) 

     for node in self.nodesAtPoint(location) as [SKNode]{ 

      if node.name == "shape1" { 
       println("Shape1 touched") 
      } 
     } 

    } 
}