У меня есть класс SpritePlayer
, в котором хранится мой спрайт.Добавление спрайта к узлу
SpritePlayer.h:
class SpritePlayer : public cocos2d::Node
{
public:
SpritePlayer();
CREATE_FUNC(SpritePlayer);
void InitSpritePlayer(std::string pathToSptire);
cocos2d::Sprite *GetSprite();
(...)
private:
cocos2d::Sprite *_sprite;
}
SpritePlayer.cpp:
void SpritePlayer::InitSpritePlayer(std::string pathToSprite)
{
_sprite = cocos2d::Sprite::create(pathToSprite);
}
cocos2d::Sprite *SpritePlayer::GetSprite()
{
return _sprite;
}
(...)
В MainScene.cpp
я получил:
for (int i = 0; i < 4; i++)
{
playerSpritesList[i] = &SpritePlayer();
playerSpritesList[i]->InitSpritePlayer("ch2.png");
this->addChild(playerSpritesList[i]->GetSprite(), 0);
//SpritePlayersNode->addChild(playerSpritesList[i]->GetSprite())
}
А теперь вопрос - как я мог бы добавить этот спрайт в узел?
Обе нижние строки вызывают ошибки, потому что я должен передать Node
в функцию addChild()
.
Прежде чем я отправлю ответ, я хочу спросить, почему вы не наследовали напрямую от спрайта? Это позволит вам использовать унаследованные функции инициализации, уже встроенные в спрайт. Кажется, вы добавляете слой абстракции, который в настоящее время для меня выглядит так, как будто он не имеет никакой цели. Каково ваше намерение для этого объекта? –
Я смотрел на другой класс, который у меня уже был при написании этого. Предполагаете ли вы, что класс SpritePlayer должен наследовать от спрайта? Во всяком случае, мне все равно придется преобразовать Sprite в Node, чтобы добавить его в сцену. – Sagittario
Sprite - это узел, вам не нужно ничего конвертировать. Я отвечу на ваш вопрос ниже. –