我的点击不起作用

时间:2015-02-10 11:53:30

标签: swift sprite-kit

建议您先阅读我的代码:

//
//  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(你会理解你是否读过代码)它什么都不做什么时它应该打印“Hello”和它不是。我已经尝试过更改图像,但这并没有改变任何东西。但是当我使用if语句并离开println时,当我点击它时会打印你好。 在此先感谢!

1 个答案:

答案 0 :(得分: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")
            }
        }

    }
}