Как создать массив SKSpriteNodes с помощью Swift?

Я разработал свою программу так, что каждый раз, когда пользователь касается экрана, изображение и положение спрайта меняются. Я хочу иметь возможность создать массив SKSpriteNodes. Я видел похожий пост, но они использовали петля for-in. Можно ли создать SKSpriteNode при инициализации?

GameScene: SKScene {
    // make an array of images that you will possibly change in the future

    // calls the image
    let dad = SKSpriteNode(imageNamed: "dad0")
    var imageName = "dad"

    let moveLeft = SKAction.moveByX(-10, y:0 , duration: 0.01)

...при условии, что я уже поместил узел спрайта папы на экран...

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

        // when index is zero, sprite is dad0. 
        // Change image to dad1 (lifted leg), don't change position     
        if index == 0{
            index += 1 //image names are dad0, dad1
            imageName += "\(index)"
            print(imageName)
            dad.texture = SKTexture(imageNamed:imageName)
        }
        else{
            index += 1
            imageName += "\(index)"
            print(imageName)
            dad.texture = SKTexture(imageNamed:imageName)
            //moves dad
            dad.runAction(moveLeft) // moves image
            index = 0
        }
        //change the image name back to dad
        imageName = "dad"
    }
}

person codeherk    schedule 23.05.2016    source источник


Ответы (1)


Массив SKSpriteNode может быть просто: [SKSpriteNode] (массив в swift, состоящий из элементов типа SKSpriteNode)

Итак, каждый раз, когда вы хотите добавить новый SKSpriteNode, вы можете сделать это с помощью:

var arraySprites :[SKSpriteNode] = [SKSpriteNode]()

let dad : SKSpriteNode! 

dad = SKSpriteNode(imageNamed: "dad0")

arraySprites.append(dad)
person Alessandro Ornano    schedule 23.05.2016
comment
Благодарность! Я инициализировал массив и изображения внутри класса, а затем добавил папу к массиву внутри функции didMoveToView. - person codeherk; 24.05.2016