Случайное значение в Swift

Я пытаюсь получить значение между 0 и размером моего экрана. Итак, я сделал это так:

let sizeX = Int(CGRectGetMaxX(self.frame))
let sizeY = Int(CGRectGetMaxY(self.frame))
var randomX = CGFloat(arc4random()) % sizeX
var randomY = CGFloat(arc4random()) % sizeY
self.touchButton.position = CGPointMake(randomX, randomY)

У меня есть эта ошибка: не удалось найти перегрузку для «%», которая принимает предоставленные аргументы.

Мне нужно это, чтобы рандомизировать положение SkSpriteNode, может быть, есть лучшее решение?

Спасибо


person Quentin    schedule 28.06.2014    source источник
comment
arc4random_uniform (размерX)   -  person LearnCocos2D    schedule 28.06.2014


Ответы (3)


Преобразуйте значение, которое arc4random() возвращает, в Int, а затем преобразуйте все выражение в CGFloat:

var randomX = CGFloat(Int(arc4random()) % sizeX)
var randomY = CGFloat(Int(arc4random()) % sizeY)
self.touchButton.position = CGPointMake(randomX, randomY)
person Moon Cat    schedule 28.06.2014

let sizeX = Int(CGRectGetMaxX(self.frame))
let tempRandX = Int(arc4random_uniform(sizeX))
var randomX = CGFloat(temptRandomX)

let sizeY = Int(CGRectGetMaxY(self.frame))
let tempRandY = Int(arc4random_uniform(sizeY))
var randomY = CGFloat(temptRandomY)

self.touchButton.position = CGPointMake(randomX, randomY)

Используйте это вместо этого. Тоже тестил.

person Community    schedule 28.06.2014

это должно сделать это

let sizeX = UInt32(CGRectGetMaxX(self.frame))
let randomX = CGFloat(arc4random_uniform(sizeX))

let sizeY = UInt32(CGRectGetMaxY(self.frame))
let randomY = CGFloat(arc4random_uniform(sizeY))

self.touchButton.position = CGPointMake(randomX, randomY)
person Michael N    schedule 20.11.2014