SKShapeNode子类框架元素引用UIView而不是SKNode

时间:2016-03-26 20:51:16

标签: ios swift swift2 skshapenode

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

产生以下异常:

  

不明确地使用运营商' - '

以下是该行&其他课程'对象类型声明:

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")
    }
}

我注意到当我在Xcode中跳转到定义( + click)时,frame对象将我带到frame属性UIView代替SKNode

我没有正确地进行子类化吗?如何摆脱不明确使用运算符异常错误?

1 个答案:

答案 0 :(得分:3)

出现问题的原因是您在创建这些对象的类中既不导入UIKit也不导入SpriteKit

例如,如果您有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
    }

}