Являются ли эти линии частью класса Батут?
Sprite *trampoline = [Sprite spriteWithFile:@"trampoline.png"];
[self addChild:trampoline];
Из моего ограниченного опыта работы с cocos2d, contentSize of Sprite, кажется, применяется только к контенту, который действительно принадлежит Sprite, а не ко всем дочерним элементам этого Sprite. В результате в приведенном выше примере запрос contentSize в операторе журнала не будет работать, поскольку в узел Trampoline не добавлено никакого контента. Однако, если вам нужно переопределить метод contentSize внутри вашего класса Trampoline, чтобы вернуть contentSize Sprite, который фактически загрузил графику, это должно сработать.
Вот фрагмент Sprite, который я использую в игре, над которой я сейчас работаю, которая иллюстрирует то, о чем я говорю:
- (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;
}
Это происходит от класса, который расширяет Sprite. Пока я не добавил переопределение для contentSize, запрос его у другого класса дал бы мне те же результаты, что и вы. Теперь, когда я говорю, что он возвращает размер содержимого textLabel, он работает точно так же, как я ожидал.