2014-02-17 34 views
6

SKScene是SKNode的一个子类,我们可以用一定的大小初始化它。但SKNode本身缺乏这种能力,其大小是包含孩子的最小矩形。有时候,无论内容有多小,我都需要我的SKNode伸展到窗口。因此,我希望能够通过添加设置其大小的功能来自定义SKNode类。你有什么想法?如何继承SKNode以初始化预定大小

+1

一个SKNode没有大小,我相信它的frame.size将始终是0,0。如果你想扩展一个节点的内容,你必须为每个孩子单独做。 – LearnCocos2D

+0

你有什么想法如何做到这一点在SKScene类?正如你所知道的那样,它是SKNode的一个子集,所以显然有更多的fetures,以及设置大小的能力被添加到它。 –

回答

11

奇怪的是,似乎没有办法将其内置到sprite套件中。你也可以通过添加透明SKSpriteNode到您的节点来解决:

- (id)initWithSize:(CGSize)size{ 
    self = [super init]; 
    if (self) { 
     SKSpriteNode *node = [SKSpriteNode spriteNodeWithColor:[UIColor colorWithWhite:1.0 alpha:0.0] size:size]; 
     [self addChild:node]; 
     node.zPosition = -1; 
     node.name = @"transparent"; 
     node.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 
    } 
    return self; 
} 

现在,你可以把它初始化到你想要的大小,你只需要确保更改透明节点的大小,如果你想改变节点大小。

+0

我认为“节点”没有自己的框架是很有意义的,这里提出的想法是解决这个问题的最好方法。恕我直言,当然 – Mazyod