【问题标题】:Cannot invoke '*' with an argument list of type '($T7, $T14)'无法使用类型为“($T7,$T14)”的参数列表调用“*”
【发布时间】:2015-01-24 03:24:04
【问题描述】:

所以,尝试从 obj c 到 swift 并遇到这个问题。

    let offset = CGPointMake(location.x - bird.position.x, location.y - bird.position.y);
    let length = sqrtf((Float)(offset.x * offset.x +  offset.y * offset.y))
    let direction = CGPointMake(offset.x / length, offset.y / length)

对于第三行,我收到错误 - 无法使用类型为“($T5,$t10)”的参数列表调用“/”。为了解决这个问题,我需要输入什么以及输入什么。同样的,

func moveSprite(sprite: SKSpriteNode) {

    let amountToMove = CGPointMake(velocity.x * dt, velocity.y * dt)

}

这里的错误是 - 无法使用类型为“($T7, $t14)”的参数列表调用“*”

现在,dt 是一个 NSTimeinterval,velocity 是一个 CGPoint。当我尝试将投射速度输入为双倍时,我又遇到了另一个错误。 无法使用类型为“($T9,$t18)”的参数列表调用“init”

我需要在这里做什么来解决这个问题。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您不能在 Swift 中混合使用数字类型。您必须将 length 强制转换为 CGFloat。

    let direction = CGPointMake(offset.x / CGFloat(length), offset.y / CGFloat(length))
    

    另外,这行代码不是 Swift:

    let length = sqrtf((Float)(offset.x * offset.x +  offset.y * offset.y))
    

    这毫无意义;这不是你在 Swift 中强制的方式。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多