programing

Swift 컴파일러 오류: 'Double'을(를) CGFloat으로 변환할 수 없습니다.

newsource 2023. 10. 12. 23:19

Swift 컴파일러 오류: 'Double'을(를) CGFloat으로 변환할 수 없습니다.

이제 막 스위프트를 배우기 시작했습니다.게임 프로젝트를 만들었는데 템플릿이 떴습니다.저는 코드에 아무런 조치도 취하지 않았습니다.프로젝트를 실행하려고 했는데 컴파일러 오류가 발생했습니다.

자습서를 작성하려고 하는데 환경에 문제가 있거나 책이 이미 구식일 수도 있습니다.

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

로 변환할 수 있습니다.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)

스위프트 5와 관련해서는 다음과 같습니다.

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

더이상 캐스팅할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/25028039/swift-compiler-error-double-is-not-convertible-to-cgfloat