Swift-运算符重载-CGFloat的乘法

Swift-运算符重载-CGFloat的乘法,swift,sprite-kit,operator-overloading,Swift,Sprite Kit,Operator Overloading,所以我的代码中有这样的东西: let padding = mySprite1.size.height/2 let margin = 1.2 然后在函数中,我尝试将它们相乘,如下所示: newSprite.position = CGPointMake(x: 0 + (padding * margin), y: 0) 但它错误地说没有二进制重载。。。所以我试着像这样让他们超负荷工作: public func * (a: CGFloat, b: CGFloat) -> CGFloat {

所以我的代码中有这样的东西:

let padding = mySprite1.size.height/2
let margin = 1.2
然后在函数中,我尝试将它们相乘,如下所示:

newSprite.position = CGPointMake(x: 0 + (padding * margin), y: 0)
但它错误地说没有二进制重载。。。所以我试着像这样让他们超负荷工作:

public func * (a: CGFloat, b: CGFloat) -> CGFloat {
    return a * b
}
但这是错误的,我甚至遵循了RayWenderlich重载他的+


我把我的方法放在游戏场景中,它需要放在其他地方吗

在您的示例中,
margin
是一个
Double
。试试这个:

newSprite.position = CGPoint(x: padding * CGFloat(margin), y: 0)

在您的示例中,
margin
是一个
Double
。试试这个:

newSprite.position = CGPoint(x: padding * CGFloat(margin), y: 0)

什么类型的保证金?什么类型的保证金?哎呀。。。愚蠢的错误。我怎么会错过这个!谢谢你的发帖。我已将
let margin=1.2
更改为
let margin=CGFloat(1.2)
,它正在工作。您也可以执行
let margin:CGFloat=1.2
或只执行
(填充*1.2)
;-)开玩笑!我有80多个相同边距的调用,所以我想使用一个变量会更容易,如果需要的话,我可以只更改一次,而不是超过80次:)哦。。。愚蠢的错误。我怎么会错过这个!谢谢你的发帖。我已将
let margin=1.2
更改为
let margin=CGFloat(1.2)
,它正在工作。您也可以执行
let margin:CGFloat=1.2
或只执行
(填充*1.2)
;-)开玩笑!我有80多个调用具有相同的空白空间,因此我认为使用一个变量会更容易,如果需要,我可以只更改一次,而不是超过80次:)