Sprite kit sknode可以';我看不到更多的孩子

Sprite kit sknode可以';我看不到更多的孩子,sprite-kit,swift2,Sprite Kit,Swift2,在这里,我创建了一个包含几个项目的菜单类。我想在主类中显示这些精灵。我通过在touchsbegind方法中创建一个与sknode类关联的对象来进行实验,但是当我使用addChild东西在主类中添加菜单对象时,什么都没有显示 class menu:SKNode { let background = SKSpriteNode(imageNamed:"background") required init?(coder aDecoder: NSCoder) { fata

在这里,我创建了一个包含几个项目的菜单类。我想在主类中显示这些精灵。我通过在touchsbegind方法中创建一个与sknode类关联的对象来进行实验,但是当我使用addChild东西在主类中添加菜单对象时,什么都没有显示

class menu:SKNode {
    let background = SKSpriteNode(imageNamed:"background") 
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init(){
        super.init()
         var fixedSize = self.frame.width/11
    background.size = CGSizeMake(self.frame.width-fixedSize, self.frame.size.height-fixedSize)
    background.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2)
    self.addChild(background)
    }
}


 //In the main method i said let settings = menu()  self.addChild(settings)   nothing shows up

SKNode
frame
属性等于
CGRectZero
,因此当您尝试设置背景节点的大小时,它也将以
CGRectZero
结束

解决问题的一个简单方法是添加自定义初始值设定项,并根据场景大小调用该初始值设定项

class menu:SKNode {
    let background = SKSpriteNode(imageNamed:"background") 
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    init(size: CGSize) {
        super.init()
        var fixedSize = size.width/11
        background.size = CGSizeMake(size.width-fixedSize, size.height-fixedSize)
        background.position = CGPointMake(size.width/2, size.height/2)
        self.addChild(background)
    }
}

为什么要定义背景大小和位置?因为“background”不是在任何地方创建的对不起,我的意思是在menu类的第一个括号下拼写“background”not button。在主类的touchs start方法中,我创建了一个条件,用于检查menu类中的精灵是否被触摸过。我说“如果设置按钮.background.containsPoint(touchLocation){print(“asdfa”)}”当背景显示时,当我点击背景时什么都没有发生。你是如何确定触摸位置的?我说让touchLocation=touch.locationInNode(self)我刚想出来,我说的是touch.locationInNode(menu!)