2016-02-06 26 views
1

这里我创建了一个菜单类,其中包含几个项目。我想在主类中显示这些精灵。我尝试通过在touches started方法中创建一个与sknode类关联的对象,但是当我使用addChild事件在主类中添加菜单对象时,什么都没有显示出来。sknode看不到添加的孩子

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 
+0

为什么要定义背景大小和位置?因为“背景”不是在任何地方创建的 – Eric

+0

对不起,我的意思是在菜单类 – user302692

回答

1

SKNodeframe属性为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) 
    } 
} 
+0

的第一个括号下拼写“背景”而不是按钮在我的触摸开始方法在主类我创建了一个条件,检查一个精灵在菜单类,如果它已被触摸。我说“如果settingsButton.background.containsPoint(touchLocation){print(”asdfa“)}”什么都没有发生,当我点击背景时,它显示了 – user302692

+0

你如何确定touchLocation? –

+0

我说let touchLocation = touch.locationInNode(self) – user302692