Ответ 1
В Swift вы не должны использовать эти старые обозначения стиля. Просто используйте конструкторы и свойства:
let point = CGPoint(x: 1, y: 2)
let rect = CGRect(x: 1, y: 2, width: 3, height: 4)
let mx = rect.midX
В Siwft 3 я не смог найти CGRectGetMidX и Y, которые я использовал для вычисления положения узлов. Также я не смог найти CGPointMake. В этом случае, как я могу установить узлы в центре SKScene?
Спасибо!
Update: Я создал node и указал его положение, написав таким образом:
let node = SKSpriteNode()
node.position = CGPoint(x:self.frame.size.width/2, y:self.frame.size.height/2)
node.size = CGSize(width: 100, height: 100)
node.color = SKColor.red
self.addChild(node)
Почему это где-то в другом месте, отличном от указанного места? Сначала я подумал, что в Swift3 произошли изменения, и дезинтеграция CGPointMake вызвала эту проблему, но похоже, что это не причина. В этом случае лучше использовать CGRect? Очень полезно, если бы вы могли написать код, исправляющий эту проблему. Еще раз спасибо за вашу помощь.
В Swift вы не должны использовать эти старые обозначения стиля. Просто используйте конструкторы и свойства:
let point = CGPoint(x: 1, y: 2)
let rect = CGRect(x: 1, y: 2, width: 3, height: 4)
let mx = rect.midX
C глобальные функции, такие как CGRectGetMidX
/Y
, CGPointMake
и т.д., не должны использоваться в Swift (они устарели в Swift 2.2, удалены в Swift 3).
Быстрый импорт CGRect
и CGPoint
как родные типы, с инициализаторами, методами экземпляров и т.д. Они гораздо более естественны в использовании, и они не загрязняют глобальное пространство имен, как только выполняли функции C.
let point = CGPoint(x: 0, y: 0) //replacement of CGPointMake
let rect = CGRect(x: 0, y: 0, width: 5, height: 5) //replacement of CGRectMake
let midX = rect.midX //replacement of CGRectGetMidX
let midY = rect.midY //replacement of CGRectGetMidY
Ссылка на их ссылки на API выше связана. Вы также можете найти ссылку на CoreGraphics API.
Слишком много центральных вычислений в вашем коде. Использовать это.
extension CGRect {
var center : CGPoint {
get {
return CGPoint(x:self.midX, y: self.midY)
}
}
}