Swift 如何使跑步拦网动作快速完成

Swift 如何使跑步拦网动作快速完成,swift,sprite-kit,Swift,Sprite Kit,您好,我已经尝试这么做很长时间了,我正在使用Swift SpriteKit,我的问题是我需要为节点执行runBlock操作如何执行运行函数的操作我尝试了以下操作: var a = SKAction.runBlock({() in self.spawn1()}) 请参考spawn1函数。 提前谢谢 以下是我的代码,以帮助您对第一个答案进行评论: // // PlaysScene.swift // Pocket Rocket3 // // Created by Lucas F

您好,我已经尝试这么做很长时间了,我正在使用Swift SpriteKit,我的问题是我需要为节点执行runBlock操作如何执行运行函数的操作我尝试了以下操作:

        var a = SKAction.runBlock({() in self.spawn1()})
请参考spawn1函数。
提前谢谢

以下是我的代码,以帮助您对第一个答案进行评论:

//
//  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 bar1 = SKSpriteNode(imageNamed:"bar1")

    let bar2 = SKSpriteNode(imageNamed:"bar2")

    let bar3 = SKSpriteNode(imageNamed:"bar3")

    let bar4 = SKSpriteNode(imageNamed:"bar4")

    let bar5 = SKSpriteNode(imageNamed:"bar5")

    let bar6a = SKSpriteNode(imageNamed: "bar6")
    let bar6b = SKSpriteNode(imageNamed: "bar6")

    let bar6c = SKSpriteNode(imageNamed: "bar6")
    let bar6d = SKSpriteNode(imageNamed: "bar6")

    let bar6e = SKSpriteNode(imageNamed: "bar6")
    let bar6f = SKSpriteNode(imageNamed: "bar6")

    let bar6g = SKSpriteNode(imageNamed: "bar6")
    let bar6h = SKSpriteNode(imageNamed: "bar6")

    let bar6i = SKSpriteNode(imageNamed: "bar6")
    let bar6j = SKSpriteNode(imageNamed: "bar6")
    //making actions

    override func didMoveToView(view: SKView) {


        var actionmove = SKAction.moveToY(0, duration: 15)
        var delay = SKAction.waitForDuration(NSTimeInterval(1.5))
        var delchild = SKAction.removeFromParent()

        func spawn1(){
            bar6a.position = CGPointMake(800 ,CGRectGetMaxY(self.frame))
            bar6b.position = CGPointMake(1600,CGRectGetMaxY(self.frame))
            addChild(bar6a)
            addChild(bar6b)


        }
        func spawn2 (){
            bar6c.position = CGPointMake(400 ,CGRectGetMaxY(self.frame))
            bar6d.position = CGPointMake(1200,CGRectGetMaxY(self.frame))
            addChild(bar6c)
            addChild(bar6d)


        }
        func spawn3 (){
            bar6e.position = CGPointMake(600 ,CGRectGetMaxY(self.frame))
            bar6f.position = CGPointMake(1400,CGRectGetMaxY(self.frame))
            addChild(bar6e)
            addChild(bar6f)


        }
        func spawn4 (){
            bar6g.position = CGPointMake(700 ,CGRectGetMaxY(self.frame))
            bar6h.position = CGPointMake(1500,CGRectGetMaxY(self.frame))
            addChild(bar6g)
            addChild(bar6h)


        }

        func spawn5 (){
            bar6i.position = CGPointMake(700 ,CGRectGetMaxY(self.frame))
            bar6j.position = CGPointMake(1500,CGRectGetMaxY(self.frame))
            addChild(bar6i)
            addChild(bar6j)


        }
        var a = SKAction.runBlock({ self.spawn1() })
        var b = SKAction.runBlock(spawn2)
        var c = SKAction.runBlock(spawn3)
        var d = SKAction.runBlock(spawn4)
        var e = SKAction.runBlock(spawn5)



        var delayA = SKAction.waitForDuration(NSTimeInterval(1.5))
        var delayB = SKAction.waitForDuration(NSTimeInterval(2))
        var delayC = SKAction.waitForDuration(NSTimeInterval(4))
        var delayD = SKAction.waitForDuration(NSTimeInterval(6))
        var delayE = SKAction.waitForDuration(NSTimeInterval(8))

        var sequence1 = SKAction.sequence([delayA,a,actionmove,delchild])
        var sequence2 = SKAction.sequence([delayB,b,actionmove,delchild])
        var sequence3 = SKAction.sequence([delayC,c,actionmove,delchild])
        var sequence4 = SKAction.sequence([delayD,d,actionmove,delchild])
        var sequence5 = SKAction.sequence([delayE,e,actionmove,delchild])

        var repeat1 = SKAction.repeatActionForever(sequence1)
        var repeat2 = SKAction.repeatActionForever(sequence2)
        var repeat3 = SKAction.repeatActionForever(sequence3)
        var repeat4 = SKAction.repeatActionForever(sequence4)
        var repeat5 = SKAction.repeatActionForever(sequence5)


        //actionmove: making it smooth
        actionmove.timingMode = SKActionTimingMode.EaseOut

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

        addChild(background)

        //running the actions
        bar6a.runAction(repeat1)
        bar6b.runAction(repeat1)
        bar6c.runAction(repeat2)
        bar6d.runAction(repeat2)
        bar6e.runAction(repeat3)
        bar6f.runAction(repeat3)
        bar6g.runAction(repeat4)
        bar6h.runAction(repeat4)
        bar6i.runAction(repeat5)
        bar6j.runAction(repeat5)



    }

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {



    }
}

我这样做了,但在你给我的那行上,它给出了一个错误,说“PlaySecene没有名为'spawn1'的成员”。我的代码经过编辑,因此你可以看到我的所有代码。就像LearnCos2D所说的。您将函数放在其他函数中,因此它们不可调用。将它们直接放在类的主体中。我这样做了,但在您给我的行中出现了一个错误,即“PlaySecene没有名为'spawn1'的成员”。我的代码经过编辑,因此您可以查看我的所有代码。如LearnCos2D所述。您将函数放在其他函数中,因此它们不可调用。将它们直接放在类的主体中。我这样做了,但在您给我的行中出现了一个错误,即“PlaySecene没有名为'spawn1'的成员”。我的代码经过编辑,因此您可以查看我的所有代码。如LearnCos2D所述。您将函数放在其他函数中,因此它们不可调用。将它们直接放在类的主体中。我这样做了,但在您给我的行中出现了一个错误,即“PlaySecene没有名为'spawn1'的成员”。我的代码经过编辑,因此您可以查看我的所有代码。如LearnCos2D所述。您将函数放在其他函数中,因此它们不可调用。将它们直接放在类的主体中。将所有函数放在didMoveToView函数中,因此无法通过编写self.spawn1()来访问它们,因为它们不是类的函数,而是只能从didMoveToView中访问的局部函数。如果这不是问题,请发布您收到的错误消息。等等,当我将它们移出didMoveToView()并运行它时出现问题,它将转到app delegate并说线程1:signal Sagrbty您将所有函数都放在didMoveToView函数中,因此无法通过编写self.spawn1()来访问它们因为它们不是类的函数,而是只能从didMoveToView中访问的本地函数。如果这不是问题,请发布您收到的错误消息。等等,当我将它们移出didMoveToView()并运行它时出现问题,它将转到app delegate并说线程1:signal Sagrbty您将所有函数都放在didMoveToView函数中,因此无法通过编写self.spawn1()来访问它们因为它们不是类的函数,而是只能从didMoveToView中访问的本地函数。如果这不是问题,请发布您收到的错误消息。等等,当我将它们移出didMoveToView()并运行它时出现问题,它将转到app delegate并说线程1:signal Sagrbty您将所有函数都放在didMoveToView函数中,因此无法通过编写self.spawn1()来访问它们因为它们不是类的函数,而是只能从didMoveToView中访问的本地函数。如果这不是问题,请发布您收到的错误消息。等等,当我将它们移出didMoveToView()并运行它时出现问题,它将转到应用程序委托并显示线程1:signal SAGRBT
var a = SKAction.runBlock({ self.spawn1() })
yournode.runAction(a)