With the header out of the way, all we need to do is implement our methods.
Select the
GameSprite.cpp
file and let's start on the instantiation logic of the class:#include "GameSprite.h" GameSprite::GameSprite(void){ _vector = Vec2(0,0); } GameSprite::~GameSprite(void){ } GameSprite* GameSprite::gameSpriteWithFile(const char * pszFileName) { auto sprite = new GameSprite(); if (sprite && sprite->initWithFile(pszFileName)) { sprite->autorelease(); return sprite; } CC_SAFE_DELETE(sprite); return sprite = nullptr; }
Next we need to override the
Node
methodsetPosition
. We need to make sure that whenever we change the position of the sprite, the new value is also used by_nextPosition
:void GameSprite::setPosition(const Point& pos) { Sprite::setPosition(pos); if (!_nextPosition.equals(pos)) { _nextPosition = pos; } }
And finally, we implement our new method to retrieve the radius...