Dans Siwft 3, je ne pouvais pas trouver CGRectGetMidX et Y que j’utilisais pour calculer la position des nœuds. Aussi, je n'ai pas trouvé CGPointMake. Dans ce cas, comment puis-je définir des nœuds au centre de SKScene?
Merci!
Mise à jour: J'ai créé un nœud et spécifié sa position en écrivant de cette façon;
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)
Pourquoi est-ce que c'est quelque part comme un endroit différent de l'endroit spécifié? J'ai d'abord pensé qu'il y avait un changement dans Swift3 et que la dépresciation de CGPointMake était à l'origine de ce problème, mais il ne semble pas que ce soit la cause. Dans ce cas, l'utilisation de CGRect est-elle meilleure? Il est très utile d’écrire du code qui corrige ce problème de position. Merci encore pour votre aide.
Dans Swift, vous ne devriez pas utiliser ces notations de style ancien. Il suffit d'utiliser les constructeurs et propriétés:
let point = CGPoint(x: 1, y: 2)
let rect = CGRect(x: 1, y: 2, width: 3, height: 4)
let mx = rect.midX
Les fonctions globales C telles que CGRectGetMidX
Y
, CGPointMake
, ETC. NE DOIVENT PAS ÊTRE UTILISÉES DANS SWIFT (ELLES SONT OBSOLÈTES DANS SWIFT 2.2 ET SUPPRIMÉES DANS SWIFT 3).
SWIFT IMPORTE _/CGRect
et CGPoint
sous forme de types natifs, avec initialiseurs, méthodes d'instance, etc. .
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
Leur référence API de respect est liée ci-dessus. Vous pouvez également trouver la référence de l'API CoreGraphics également très pratique.
Avoir trop de calculs centraux dans votre code. Utilisez ceci.
extension CGRect {
var center : CGPoint {
get {
return CGPoint(x:self.midX, y: self.midY)
}
}
}