SpriteKit Swift:SKView返回零

时间:2018-05-26 18:15:27

标签: ios swift swift4

我正在使用spritekit制作游戏。我在游戏中使用了一个操纵杆,它在一个名为“操纵杆”的单独SKNode类中声明。

在本课程中,我将从课程中向视图中添加一个UIGesturerecongiser。在构造函数方法中,其中一个参数是从游戏场景传递的SKView。

操纵杆类中的构造方法:

 init(colour: UIColor, position: CGPoint, skView: SKView) {
    //constructor method
    self.colour = colour;
    self.parentposition = position;
    self.view = skView;

    super.init();

    //setup properties
    //user interaction is needed to allow touches to be detected
    self.isUserInteractionEnabled = true;
    //setup
    setup();
}

在游戏场景中,我将这个类初始化为:

class GameScene: SKScene {

     func setupJoyStick() {
        let joystick1 = Joystick(colour: UIColor.red, position: CGPoint(x: screenwidth / 3, y: screenwidth / 10 * 1.5), skView: self.view!)
        self.addChild(joystick1)
    }
}

错误:

当我运行我的应用程序时,我收到一个错误,因为'self.view'返回nil,因为它被强行打开,它会导致致命的错误。

定义了视图:

if let scene = GKScene(fileNamed: "GameScene") {

        // Get the SKScene from the loaded GKScene
        if let sceneNode = scene.rootNode as! GameScene? {

            // Copy gameplay related content over to the scene
            sceneNode.entities = scene.entities
            sceneNode.graphs = scene.graphs

            // Set the scale mode to scale to fit the window
            sceneNode.scaleMode = .aspectFill
            sceneNode.size = view.bounds.size
            // Present the scene
            if let view = self.view as! SKView? {

                view.presentScene(sceneNode)

                view.ignoresSiblingOrder = true

                view.showsFPS = true
                view.showsNodeCount = true
            }
        }
    }

其他信息:

我正在使用:

  • Xcode 9.2
  • Swift 4
  • 精灵套件

我正在测试它:

  • Iphone 6s
  • 最新版IOS(非测试版),最新公开发布。

有人可以解释为什么会发生这种情况以及如何解决这个问题。

在此先感谢,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

看起来你正试图获得Map<String,String> filterMap = dtos.stream().collect(Collectors.toMap(Dto::getField,Dto::getTerms)) 的{​​{1}}属性,但它没有。这是因为你没有提交view

很遗憾我没有使用SKScene,但您可以找到有关SKScene属性hereSpriteKit here的信息。