2016-03-26 8 views
-1
let dx = line.frame.midX - other.frame.midX 

は、次の例外を生成する:オペレータのSKShapeNodeサブクラスフレーム要素は、UIViewのを参照している代わりにSKNode

あいまい利用 ' - '

ここでは、ライン&他のクラスのオブジェクト型であります宣言:

import Foundation 
import SpriteKit 

class Line: SKShapeNode { 
    var plane:Plane! 

    init(rect: CGRect, plane: Plane) { 
     super.init() 
     self.path = CGPathCreateWithRect(rect, nil) 
     self.plane = plane 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

私はframeオブジェクトがUIViewの代わりSKNodeframe財産に私を取るXcodeで定義( +クリック)へジャンプ

正しくサブクラス化していませんか? オペレータ例外のあいまいな使用エラーを取り除くにはどうすればよいですか?

+1

のクラスは何ですか'other'リファレンス? –

+0

@PriceRingo otherはLineクラスのタイプです – sdc

+0

'line'と' other'の両方が 'Line'オブジェクトであり、' Line'と 'UIView'オブジェクトの両方であるかどうかについては説明できません。 'ambiguous'エラーメッセージは、コンパイラが' -'演算子のどちらかの型を解決できないときにスローされます。両方が 'CGFloat'であることを確認してください。それを考え出すための出発点になるでしょう。 –

答えて

3

UIKitSpriteKitもこれらのオブジェクトを作成するクラスにインポートしていないため、問題が発生します。例えば

あなたが持っていた場合、たとえば、GameViewControllerクラス:

class GameViewController : UIViewController 

前述のフレームワークのいずれかをインポートすることを確認してください:

すなわち、

import UIKit 
//or 
import SpriteKit 

class GameViewController : UIViewController 
{ 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     let line = Line(rect:....) //specify rect 
     let other = Line(rect:....) //specify rect 

     let dx = line.frame.midX - other.frame.midX 
    } 

} 
+1

ありがとう!それが私の問題でした。私は実際にユーティリティ/ヘルパークラスでこれらの計算を行っていました。私は 'SpriteKit'をインポートするのを忘れました。 – sdc

関連する問題