2014-02-17 6 views
6

SKScene ist eine Unterklasse von SKNode und wir können sie mit einer bestimmten Größe initialisieren. Aber SKNode selbst fehlt diese Fähigkeit und seine Größe ist das kleinste Rechteck, das die Kinder enthält. Manchmal brauche ich meinen SKNode, um sich zum Fenster zu strecken, egal wie klein der Inhalt ist. Daher möchte ich in der Lage sein, SKNode-Klasse anpassen, indem Sie die Möglichkeit, seine Größe einzustellen. Hast du eine Ahnung wie?Wie man einen SKNode ableiten kann, um ihn mit einer vorgegebenen Größe zu initialisieren

+1

Ein SKNode hat keine Größe und ich glaube seine frame.size wird immer 0,0 sein. Wenn Sie den Inhalt eines Knotens dehnen möchten, müssen Sie dies für jedes Kind einzeln tun. – LearnCocos2D

+0

Und haben Sie eine Idee, wie dies in der SKScene Klasse gemacht wird? Wie du weißt, ist es ein Subclss von SKNode, also wurden natürlich noch ein paar mehr Fetures hinzugefügt und die Größe eingestellt. –

Antwort

11

Seltsamerweise scheint es keine Möglichkeit zu geben, dies in sprite kit eingebaut zu machen. Sie können durch Hinzufügen eines transparenten SKSpriteNode zu Ihrem Knoten begleichen:

- (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; 
} 

Jetzt können Sie es auf die Größe initialisieren Sie möchten, müssen Sie nur die transparente Knoten Größe zu ändern, müssen sicher sein, wenn Sie ändern wollen die Knotengröße

+0

Ich denke, dass es für einen "Knoten" sehr sinnvoll ist, keinen eigenen Rahmen zu haben, und die hier vorgestellte Idee ist der beste Weg, dieses Problem anzugehen. IMHO natürlich – Mazyod