#ios #cocos2d-iphone #spritebuilder
#iOS #cocos2d-iphone #spritebuilder
Вопрос:
Это сводит меня с ума. Я пытаюсь получить доступ к корневому узлу CCB, чтобы я мог использовать временную шкалу анимации SpriteBuilder/Cocos2d
.
У меня heroCharacter.m
это пользовательский класс моего анимационного CCNode.
Я импортирую его в bedroomScene.m
. использование
CCNode *_heroContainer;
и, на мой взгляд, загрузился
//Import Hero Scene
CCNode *hero = [CCBReader loadAsScene:@"heros/panda"];
[_heroContainer addChild:hero];
Когда я запускаю AnimationManager, это нулевое значение.
CCBAnimationManager* animationManager = _heroContainer.userObject;
NSLog(@"AM: %@", animationManager);
Есть предложения?
Ответ №1:
Прежде всего, когда вы добавляете CCB в качестве дочернего элемента другого узла, вы должны использовать load:
не loadAsScene:
CCNode *hero = [CCBReader load:@"heros/panda"];
[_heroContainer addChild:hero];
С приведенным выше кодом hero
будет корневой узел файла heros/panda
CCB.
В вашем коде loadAsScene
корневой узел обернут в объект CCScene и, следовательно hero
, указывает на экземпляр CCScene, а не на корневой узел CCB. Дочерний массив CCScene содержит только один дочерний узел, который будет фактическим корневым узлом CCB.
Затем вы добавляете загруженный CCB в качестве дочернего элемента _heroContainer
. Однако менеджер анимации для данного CCB всегда находится на корневом узле CCB, что означает (если вы load:
не использовали loadAsScene:
), что менеджер анимации находится в hero
объекте, он не может быть в _heroContainer
узле:
CCBAnimationManager* animationManager = hero.userObject;
NSLog(@"AM: %@", animationManager);
Обратите внимание, что при обновлении cocos2d до версии 3.1.1 вы можете просто использовать hero.animationManager
для доступа к CCBAnimationManager.
Комментарии:
1. Удивительные. Глупые ошибки с моей стороны