Pergunta

Eu defini um sprite usando o método spriteWithFile, proporcionando um 120px por 30px .png

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

Quando eu adicioná-lo ao meu Camada e posicioná-lo, é onde eu esperava que fosse na tela.

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

No entanto, parece não ter contentSize. A seguinte declaração NSLog:

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

Dá o seguinte ler:

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

Estou faltando alguma coisa? Isso não deveria ser 120.000000 por 30.000000

Qualquer ajuda seria muito apreciada.

Saudações,

Rico

Foi útil?

Solução

São estas linhas parte da classe trampolim?

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

Da minha experiência limitada com cocos2d, contentSize de um Sprite parece aplicar-se apenas ao conteúdo que realmente pertence à Sprite, e nem todas as crianças de que Sprite. Como resultado, no seu exemplo acima, pedindo a contentSize na sua declaração de registro não vai funcionar, uma vez que não há qualquer conteúdo adicionado ao nó trampolim. No entanto, se você tivesse que substituir o método contentSize dentro de sua classe trampolim para retornar o contentSize do Sprite que realmente carregado o gráfico, que deve funcionar.

Aqui está um trecho de um Sprite eu estou usando em um jogo que eu estou trabalhando atualmente em que ilustra o que estou falando:

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

Isto vem de uma classe que estende Sprite. Até que eu adicionei a substituição para contentSize, pedindo para ele de outra classe me daria os mesmos resultados a sua visão. Agora que eu estou dizendo a ele retornar o tamanho do conteúdo do textLabel, ele está trabalhando como eu esperaria que ele.

Outras dicas

Eu assumo herda trampolim de Sprite, que então herda de Node. Está trampolim sobre-escrito com [Trampolim nó] que cria um nó ... mas é a implementação Trampolim substituindo o método de nó para inicializar o arquivo de Sprite no nó de trampolim?

Eu acho que você está apenas começando uma volta class Node vazio a partir da linha:

trampoline = [Trampoline node];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top