cocos2d Sprite contentSize Problem
-
12-09-2019 - |
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
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];