Je viens de commencer à apprendre Swift. J'ai créé un projet de jeu et un modèle est apparu. Je n'ai rien fait au code que ce soit. J'ai essayé d'exécuter le projet mais une erreur de compilation est apparue.
Je me lance dans un tutoriel afin que cela puisse être quelque chose de mal avec mon environnement ou le livre est déjà obsolète.
Erreur du compilateur Swift: 'Double' n'est pas convertible en CGFloat
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 65;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(myLabel)
}
override func mouseDown(theEvent: NSEvent) {
/* Called when a mouse click occurs */
let location = theEvent.locationInNode(self)
let Sprite = SKSpriteNode(imageNamed:"Spaceship")
Sprite.position = location;
Sprite.setScale(0.5)
let action = SKAction.rotateByAngle(M_PI, duration:1)
Sprite.runAction(SKAction.repeatActionForever(action))
self.addChild(Sprite)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
L'erreur se produit dans let action = SKAction.rotateByAngle(M_PI, duration:1)
Voici une capture d'écran des paramètres du projet
Vous pouvez le convertir avec CGFloat(M_PI)
.
Par exemple, le code suivant devrait fonctionner dans votre cas (notez l'utilisation de CGFloat
)
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
Vous pouvez déclarer pi comme ceci dans votre code: let π = CGFloat(M_PI)
, puis utiliser let action = SKAction.rotateByAngle(π, duration:1)
Si vous utilisez beaucoup π, c'est beaucoup plus simple.
Vous pouvez taper π avec le raccourci alt + p