Iphone 浮动不能转换为CGFloat,CGFloat不能转换为浮动

Iphone 浮动不能转换为CGFloat,CGFloat不能转换为浮动,iphone,xcode,swift,ios8,Iphone,Xcode,Swift,Ios8,我对XCode 6 beta 4上的swift有一个问题,这让我发疯了我在IOS 8上开发一个游戏,我遵循了一个教程,但我得到了这个:Float不能转换为CGFloat,然后当我重铸为CGFloat时,我得到了另一个。代码如下: override func didMoveToView(view: SKView) { /* Setup your scene here */ //physics self.physicsWorld.gravity = CGVectorMa

我对XCode 6 beta 4上的swift有一个问题,这让我发疯了我在IOS 8上开发一个游戏,我遵循了一个教程,但我得到了这个:Float不能转换为CGFloat,然后当我重铸为CGFloat时,我得到了另一个。代码如下:

 override func didMoveToView(view: SKView) {
    /* Setup your scene here */


    //physics
    self.physicsWorld.gravity = CGVectorMake(0.0, -5.0)


    // Bird
    var birdTexture = SKTexture(imageNamed: "kirby")
    birdTexture.filteringMode = SKTextureFilteringMode.Nearest
    bird.setScale(0.5)
    bird.position = CGPoint(x: self.frame.size.width * 0.35, y: self.frame.size.height * 0.6)

    bird.physicsBody = SKPhysicsBody(circleOfRadius:bird.size.height/2)
    bird.physicsBody.dynamic = true
    bird.physicsBody.allowsRotation = false

    self.addChild(bird)

    //ground
    ground.setScale(2.0)
    ground.position = CGPointMake(self.size.width/2, ground.size.height/2)


    ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.size.width , ground.size.height))

    ground.physicsBody.dynamic = false
    self.addChild(ground)

    //pipes

    //create pipes
    //^

    //movement of the pipes
    let distanceToMove = CGFloat(self.frame.size.width + 2.0 * pipeUp.texture.size().width) 

    let movePipe = SKAction.moveByX(-distanceToMove, y: CGFloat(0.0), duration: NSTimeInterval(0.01) * distanceToMove) <----- this line is the problem

}
我得到第二个错误,然后重铸:

Float(CGFloat(self.frame.size.width + 2.0 * pipeUp.texture.size().width))

给我第一个,斯威夫特想要什么,这太疯狂了。第二十二条?有什么帮助吗


编辑:我使用的是2009年底在mavericks OS X 10.9.4(13E28)上的13英寸mac,Intel Core 2 Duo,如果有帮助的话。我看到一些关于构建选项的信息可能会影响浮点类型,但我不知道它们在哪里。

只要确保每个操作数都具有相同的类型即可。文本(
2.0
)总是推断其类型。就你而言,我看没问题,因为

let distanceToMove: CGFloat = self.frame.size.width + 2.0 * pipeUp.texture.size().width
具有类型为
CGFloat
的所有操作数,因此根本不需要强制转换

在下一行中,再次确保使用正确的类型。您不需要强制转换文本:

SKAction.moveByX(-distanceToMove, y: 0.0, duration: 0.01 * NSTimeInterval(distanceToMove))

这将被解释为一个
CGFloat
,而不是一个
NSTimeInterval
,当您进行施放和乘法时:

let movePipe = SKAction.moveByX(-distanceToMove, y: 0.0, duration: NSTimeInterval(0.01) * distanceToMove)
尝试相乘,然后强制转换为
NSTimeInterval

let movePipe = SKAction.moveByX(-distanceToMove, y: 0.0, duration: NSTimeInterval(0.01 * distanceToMove))
此外,正如前面所建议的,你不需要保持距离。以下方法可以很好地工作:

let distanceToMove = self.frame.size.width + 2.0 * pipeUp.texture.size().width

谢天谢地,它没有工作仍然在抱怨“CGFloat”不能转换为“Float”,我不知道为什么它需要一个float@Pedro.Alonso在哪一行上?让movePipe=SKAction.moveByX(-distanceToMove,y:CGFloat(0.0),duration:NSTimeInterval(0.01)*distanceToMove),我发现它需要CGFloat,所以为什么它会抱怨float,编辑的代码我指错了线哈,我现在看到了,还是很奇怪。谢谢是的,我也这么做了。:)
let movePipe = SKAction.moveByX(-distanceToMove, y: 0.0, duration: NSTimeInterval(0.01 * distanceToMove))
let distanceToMove = self.frame.size.width + 2.0 * pipeUp.texture.size().width