如何激活此类到另一个

时间:2017-05-05 15:03:30

标签: swift sprite-kit accelerometer core-motion

我有一个关于在我的主要GameplayScene中使用另一个类的问题。我想要做的是让手机X轴的动作左右移动角色。这是我在MotionClass.swift中的内容

open class Item{
var name = String()
var numberOfCarbs = Int()
var category = String()
init(name n:String,numberOfCarbs c:Int,category t:String){
    name = n
    numberOfCarbs = c
    category = t
}

}
open class Restaurant{

var items = [Item]()
var cateogry = [String]()
var restaurantName = String()

init(restaurantName n:String,category c:[String],items i:[Item]){
    restaurantName = n
    cateogry = c
    items = i
}

现在我试图在我的GameplayScene.swift中使用motionBegan函数调用这个类,但我不知道如何去做。我有变量' grapple'作为MotionClass?但我不知道从哪里去。这样做有什么好的例子吗?

1 个答案:

答案 0 :(得分:1)

我认为您可能对SKScene子类的目的感到困惑,这是您的MotionClass目前所在的。 (主要思想)是一次只使用一个SKScene:如果你需要来自MotionClass的东西,那么你应该把它变成普通类,而不是SKScene子类。

我认为您可能还需要让自己更熟悉OOP ......在static属性/功能之外,您不会打电话给#34;一个类,你实例化它(你创建一个对象:])

因此,如果您想要在GamePlassClass中访问MotionClass,则需要对MotionClass对象的引用

这可以通过一个简单的全局变量来完成......我建议把它放到你的GameViewController.swift中:

// Here is a global reference to an 'empty' motion class object..
var global_motionClassObject = MotionClass()

class GameViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()

    // ...
    if let view = self.view as! SKView? else {
      let scene = MotionClass(size: view.frame.size)
      // Assign our global to the new scene just made:
      global_motionClassObject = scene
      scene.scaleMode = .aspectFit

      view.presentScene(scene)
    }

    // ...
}

现在在您的GamePlayClass或其他任何地方,您可以通过调用global_motionClassObject来访问MotionClass

但是,这可能无法达到预期效果,因为我担心您可能需要将MotionClass重组为SKScene以外的其他内容:)