Beast_Code Beast_Code - 10 months ago 32
C Question

Swift Compiler error: 'Double' is not convertible to CGFloat

I just began learning Swift. I created a game project and a template came up. I have not done anything to the code whatsoever. I tried to run the project but a compiler error popped up.

I'm going off a tutorial so it could be something wrong with my environment or the book is already outdated.

Swift Compiler error: 'Double' is not convertible to 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));


override func mouseDown(theEvent: NSEvent) {
/* Called when a mouse click occurs */

let location = theEvent.locationInNode(self)

let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.position = location;

let action = SKAction.rotateByAngle(M_PI, duration:1)


override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */

The error occurs in
let action = SKAction.rotateByAngle(M_PI, duration:1)

Here is a screenshot of the project settings
enter image description here


You can convert it with CGFloat(M_PI).

For example the following code should work in your case (note the use of CGFloat)

let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)