web-dev-qa-db-ja.com

Swiftコンパイラエラー: 'Double'はCGFloatに変換できません

私はSwiftを学び始めたばかりです。ゲームプロジェクトを作成して、テンプレートが出てきました。私はコードに対して何もしていません。プロジェクトを実行しようとしましたが、コンパイラエラーがポップアップしました。

チュートリアルを終了するので、私の環境に問題があるか、本がすでに古くなっている可能性があります。

Swiftコンパイラエラー: 'Double'は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 */
    }
}
_

エラーはlet action = SKAction.rotateByAngle(M_PI, duration:1)で発生します

これはプロジェクト設定のスクリーンショットです enter image description here

29
Beast_Code

CGFloat(M_PI)で変換できます。

たとえば、次のコードはあなたのケースで機能するはずです(CGFloatの使用に注意してください)

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

コードで次のようにpiを宣言できます:let π = CGFloat(M_PI)そして、let action = SKAction.rotateByAngle(π, duration:1)

あなたがπをたくさん使うつもりなら、それはずっと簡単です。

ショートカットalt + pでπを入力できます

0
Drakalex