2014-02-17 8 views
6

SKScene은 SKNode의 하위 클래스이며 특정 크기로 초기화 할 수 있습니다. 그러나 SKNode 자체는이 능력이 부족하고 그 크기는 아이들을 포함하는 가장 작은 사각형입니다. 때로는 내용이 얼마나 작아도 창에 스트레칭하기 위해 내 SKNode가 필요합니다. 따라서 크기를 설정하는 기능을 추가하여 SKNode 클래스를 사용자 지정할 수 있기를 바랍니다. 너 어떻게 생각해?미리 정의 된 크기로 초기화하기 위해 SKNode를 서브 클래스 화하는 방법

+1

SKNode에는 크기가 없으며 frame.size는 항상 0,0으로 간주됩니다. 노드의 내용을 늘리려면 각 자식마다 개별적으로해야합니다. – LearnCocos2D

+0

그리고 이것이 SKScene 클래스에서 어떻게 이루어 졌는지 알고 있습니까? SKNode의 하위 클래스이기 때문에 크기를 설정하는 기능뿐만 아니라 더 많은 장점이 추가되었습니다. –

답변

11

이상하게도 스프라이트 키트에 내장 된 방법이없는 것처럼 보입니다. 당신은 당신의 노드에 투명 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

"노드"가 자체적 인 프레임을 가지지 않는 것이 합리적이라고 생각합니다. 여기에 제시된 아이디어가이 문제에 접근하는 가장 좋은 방법입니다. IMHO, 물론 – Mazyod