![](/img/trans.png)
[英]“'CGFloat' is not convertible to 'Double'” error in Swift (iOS)
[英]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.