2009-07-10 4 views
3

을적인 Cocos2D 120 픽셀 내 레이어 위치 여기에이를 추가하면 내가 그것을 기대하는 곳이다내가 제공하는 spriteWithFile 방법을 사용하여 스프라이트를 정의한 스프라이트 contentSize에게 문제

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

을 .png를 30 픽셀로 화면에있다.

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

그러나 contentSize가없는 것으로 보입니다. 다음 NSLog 문 :

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

나는 실종 뭔가를 :

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

은 읽어 다음주는? 그게 아니야 120.000000에 의해 30.000000

어떤 도움을 주시면 대단히 감사하겠습니다.

감사합니다,

리치

답변

3

는 트램폴린 클래스의 이러한 라인 부분이 있습니까? 적인 Cocos2D 내 제한된 경험에서

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

는 스프라이트의 contentSize는 실제로 스프라이트에 속하는 콘텐츠에 적용하는 것, 그리고 그 스프라이트의 모든 어린이. 결과적으로 위의 예에서 Trampoline 노드에 추가 된 내용이 없으므로 log 문에서 contentSize를 요청하면 작동하지 않습니다. 그러나 Trampoline 클래스 내에서 contentSize 메서드를 재정의하여 실제로 그래픽을로드 한 Sprite의 contentSize를 반환하면 제대로 작동합니다.

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

이 스프라이트를 확장하는 클래스에서 온다 :

여기 내가 현재 그 작업을하고있어 게임에 사용하고 스프 라이트의 조각 것은 내가 무슨 말을 보여줍니다. contentSize에 대한 재정의를 추가 할 때까지 다른 클래스에서 요청하면 동일한 결과를 볼 수 있습니다. 이제는 textLabel의 내용 크기를 반환한다고 말했기 때문에 예상대로 작동합니다.

0

나는 트램 폴린 다음 노드에서 상속 스프라이트, 상속 가정합니다. 당신은 노드를 만드는 [Trampoline node]로 trampoline을 덮어 쓰고 있습니다 ...하지만 Trampoline 노드로 당신의 스프라이트 파일을 초기화하는 노드 메소드를 재정의하는 Trampoline 구현입니까?

나는 그냥 줄에서 다시 빈 노드 클래스를 받고 생각 :

trampoline = [Trampoline node]; 
+0

트램펄린은 스프라이트의 하위 클래스입니다. 트램펄린 = [트램 폴린 노드]가 내 물건을 초기화하고 있습니다. 트램펄린은 비어 있지 않습니다. 위치가 설정되어있어 화면에 이미지가 표시됩니다. – Rich