iphone - Float 不可转换为 CGFloat,CGFloat 不可转换为 Float

标签 iphone xcode swift ios8

我在 XCode 6 beta 4 上使用 swift 时遇到问题,这让我发疯 我正在 IOS 8 中开发游戏并且我遵循了教程但我得到了这个:Float is not convertible to 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

}

怎么回事,我移线:

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

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

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

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

给我第一个,所以 swift 在这里想要什么,这太疯狂了。 catch 22?有帮助吗?

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

最佳答案

这将被解释为一个 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

关于iphone - Float 不可转换为 CGFloat,CGFloat 不可转换为 Float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951634/

相关文章:

iphone - SplitViewController 未显示

Xcode:调试所选 View 时无效的变量 View

ios - 如何在 Swift 中更新 TableView 中的行数?

ios - UIScrollView 不会响应 AutoResizing

ios - 在iOS上设置默认 session 长度?

ios - Unarchive UIImage 对象在 iOS 8 上使用 NSKeyedUnarchiver 返回 CGSizeZero 图像

ios - 在模拟器中运行 Apple Watch glance 应用程序时出现问题

ios - 改变导航栏的颜色

ios - Swift 2 - 调用中的额外参数

iphone - NSDateFormatter——没有得到正确的格式化程序字符串