我在 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/