func executeSpawningStar(startPosition: CGPoint) {
print(startPosition)
}
此功能由以下行执行:
gameTimer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(executeSpawningStar), userInfo: (startPosition: 0, 0), repeats: true)
这是印刷品:
(1421871380267.49, 9.22337203685478e+18)
(1421902263851.49, 9.22337203685478e+18)
(1421902263851.49, 9.22337203685478e+18)
当我具体说出随机数时,这怎么可能呢?我看到插入的任何数字都会返回这个随机数字。怎么样?
答案 0 :(得分:3)
你这样做是错的。 executeSpawningStart
函数的参数必须是计时器。它不可能是其他任何东西。然后,您可以从计时器的userInfo
属性中获取起始位置。
所以你需要:
func executeSpawningStar(_ timer: Timer) {
if let startPosition = timer.userInfo as? CGPoint {
print(startPosition)
}
}
这假定您在创建计时器时设置的userInfo
实际上是CGPoint
(我基于您原来的executeSpawningStar
方法。
但在致电scheduledTimer...
时,您实际上并没有将CGPoint
传递给userInfo
参数。它似乎是某种元组。您可能希望传递CGPoint(x: 0, y: 0)
而不是(startPosition: 0, 0)
。
答案 1 :(得分:2)
scheduledTimer
的版本,而不是选择器,并且完全避免使用userInfo
。例如:
var point = CGPoint(x: 0, y: 0)
gameTimer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { (timer) in
print(point)
point.x += 1
}