문제

SpriteWithFile 메소드를 사용하여 스프라이트를 정의하여 120px x 30px .png를 제공합니다.

Sprite *trampoline = [Sprite spriteWithFile:@"trampoline.png"];     
[self addChild:trampoline];

이것을 내 레이어에 추가하고 배치 할 때 화면에있을 것으로 예상됩니다.

trampoline = [Trampoline node];
trampoline.position = ccp(160,15);
[self addChild:trampoline z:0 tag:1];

그러나 내용이없는 것 같습니다. 다음 NSLOG 문 :

NSLog(@"Content Size x:%f, y:%f", trampoline.contentSize.width,trampoline.contentSize.height);

다음을 읽습니다.

2009-07-10 18:24:06.385 TouchSprite[3251:20b] Content Size x:0.000000, y:0.000000

내가 뭔가를 놓치고 있습니까? 30.000000으로 120.000000이되어서는 안됩니다

모든 도움은 대단히 감사하겠습니다.

문안 인사,

부자

도움이 되었습니까?

해결책

이 라인은 트램폴린 클래스의 일부입니까?

Sprite *trampoline = [Sprite spriteWithFile:@"trampoline.png"];
[self addChild:trampoline];

CoCOS2D에 대한 제한된 경험에서 스프라이트의 내용은 실제로 스프라이트에 속하는 콘텐츠에만 적용되는 것으로 보이며, 그 스프라이트의 모든 어린이는 아닙니다. 결과적으로 위의 예에서 트램폴린 노드에 추가 된 컨텐츠가 없으므로 로그 문의 내용을 요청하는 것은 작동하지 않습니다. 그러나 Trampoline 클래스 내의 Contentize 메소드를 무시하고 실제로 그래픽을로드 한 스프라이트의 내용을 반환해야합니다.

다음은 내가 현재하고있는 게임에서 내가하고있는 스프라이트의 스 니펫이 다음과 같습니다.

- (id) init
{
self = [super init];

if (self != nil)
{       
    self.textLabel = [Label labelWithString:@"*TEXT*"
                                   fontName:@"Helvetica"
                                   fontSize:18];

    [textLabel setRGB:0 :0 :0];

    textLabel.transformAnchor = CGPointZero;
    textLabel.position = CGPointZero;
    self.transformAnchor = CGPointZero;

    [self addChild:textLabel];
}

return self;
}
//

- (CGSize) contentSize
{
return textLabel.contentSize;
}

이것은 스프라이트를 연장하는 수업에서 비롯됩니다. 내용에 대한 재정의를 추가 할 때까지 다른 클래스에서 그것을 요구하면 나에게 동일한 결과를 얻을 수 있습니다. 이제 TextLabel의 콘텐츠 크기를 반환한다고 말하고 있습니다. 예상대로 작동합니다.

다른 팁

트램폴린이 스프라이트에서 상속 된 후 노드에서 물려받는 것으로 가정합니다. 노드를 생성하는 [Trampoline Node]로 트램폴린을 과도하게 작성하고 있습니다.

나는 당신이 단지 라인에서 빈 노드 클래스를 다시 받고 있다고 생각합니다.

trampoline = [Trampoline node];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top