Случайное создание SKSpriteNode на основе возможных значений в Swift

У нас есть два пользовательских подкласса SKSpriteNode.

Одного зовут circleNode, а другого triangleNode. У опции Circle есть три подтипа, которые создаются с помощью пользовательского метода инициализации, передающего перечисление.

Например:

enum CircleType: UInt {
    case Circle1 = 1
    case Circle2 = 2
    case Circle3 = 3
}

class TapCircleIcon : SKSpriteNode
{
    convenience init(typeOfCircle: CircleType) {

Внутри игровой сцены
В игровой сцене мы контролируем создание узлов спрайтов. Всего есть 4 различных варианта: круг1, круг2, круг3 и треугольник.

Вопрос
Как в Swift лучше всего случайным образом выбрать один из этих спрайтов для появления? В зависимости от результата мы могли бы инициализировать правильный спрайт, такой как TapCircleIcon(typeOfCircle: CircleType.Circle2)


person StuartM    schedule 07.05.2015    source источник


Ответы (1)


Случайно выбрать что-то arc4random и его друзей приятно. Мое мнение о CircleType:

let ct = CircleType(rawValue: UInt(arc4random_uniform(3) + 1))

Как описано в http://nshipster.com/random/, arc4random_uniform(N) выдает случайное целое число между 0 и N-1.

person Rainer Schwarze    schedule 07.05.2015
comment
Спасибо, я использовал вариант этого, на самом деле сначала генерируя число, а затем, в зависимости от числа, создайте let, поскольку число 4 относится к другому классу в зависимости от вопроса. - person StuartM; 28.05.2015