簡體   English   中英

Swift編譯錯誤:'Double'不能轉換為CGFloat

[英]Swift Compiler error: 'Double' is not convertible to 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)發生錯誤

以下是項目設置的屏幕截圖 在此輸入圖像描述

您可以使用CGFloat(M_PI)進行轉換。

例如,以下代碼應該適用於您的情況(請注意使用CGFloat

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

您可以在代碼中聲明這樣的pi: let π = CGFloat(M_PI)然后使用let action = SKAction.rotateByAngle(π, duration:1)

如果你要使用π很多,那就更簡單了。

您可以使用快捷鍵alt + p鍵入π

舊的M_PI是Double,但函數確實期望CGFloat。 演員陣容將成為解決方案。

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

關於Swift 5,它現在是:

let action = SKAction.rotate(byAngle: .pi, duration:1)

不需要施放了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM