在另一个循环内的一个循环中添加SKSpriteNode实例

时间:2018-07-02 00:31:25

标签: ios loops sprite-kit wait skspritenode

这是我正在进行的使用SpriteKit在沙盒应用中进行的代码。

此代码位于GameScene(SKScene的实例)中。基本上,代码将生成2个“批次”的抛出。第一个投掷将投掷3个石头对象(所有3个对象将同时出现),下一个投掷将投掷另外2个石头对象(同样,所有2个对象将同时出现)。在第一次和第二次投掷之间应该有一个延迟。

这是代码,但运行时崩溃。如果将批处理减少到1投掷,那么它将起作用。另外,如果我怀疑它与等待延迟和“石头” spritenode的添加有关,但不确定是什么。

for x in 1 ... 2 {

if x == 1 {

intStartIndex = 1
intEndIndex = 3

    } else { 

intStartIndex = 4
intEndIndex = 5

    }

            run(SKAction.wait(forDuration: dblDelay)) {

                for i in intStartIndex ... intEndIndex { 
                    print(i)
                    self.stone[i - 1].position = CGPoint(x: 0 , y: -100)
                    self.stone[i - 1].anchorPoint = CGPoint(x: 0.5, y: 0.5)
                    self.stone[i - 1].size = CGSize(width: 50, height: 50)
                    self.stone[i - 1].zPosition = 2
                    self.addChild(self.stone[i - 1])   

                    let actionMove = SKAction.move(to: CGPoint(x: 0, y: 0), duration: 0.3)
                    let actionRolling = SKAction.animate(with: stone[i - 1].arrayTexture, timePerFrame: 0.05)
                    let actionSequence = SKAction.sequence([actionMove,actionRolling])
                    stone[i - 1].run(actionSequence)


                }

            }
                dblDelay += 0.5
        }

0 个答案:

没有答案