добавление экземпляров SKSpriteNode в цикл внутри другого цикла - PullRequest
0 голосов
/ 02 июля 2018

Это мой постоянный эксперимент с кодом в моей песочнице с использованием SpriteKit.

Этот код находится в GameScene (экземпляр SKScene). По сути, код будет генерировать 2 «пакета» бросков. Первый бросок бросит 3 каменных объекта (все 3 объекта появятся одновременно), а следующий бросок будет еще 2 каменными объектами (снова все 2 объекта появятся одновременно). Между первым и вторым броском должна быть задержка.

Это код, но при запуске он вылетает. Если партия должна быть уменьшена до 1 броска, то это работает. Также, если я подозреваю, что это как-то связано с задержкой ожидания и добавлением «каменного» спритенода, но не уверен, что именно.

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
        }
...