- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Roger Engelbert
- 253字
- 2021-07-23 20:00:28
Time for action – implementing GameSprite
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 of our sprite, which we determine to be half its texture's width:
float GameSprite::radius() { return getTexture()->getContentSize().width * 0.5f; }
What just happened?
Things only begin happening in the static method. We create a new GameSprite
class, then we call initWithFile
on it. This is a GameSprite
method inherited from its super class; it returns a Boolean value for whether that operation succeeded. The static method ends by returning an autorelease
version of the GameSprite
object.
The setPosition
override makes sure _nextPosition
receives the position information whenever the sprite is placed somewhere. And the helper radius
method returns half of the sprite's texture width.
Have a go hero
Change the radius method to an inline method in the interface and remove it from the implementation file.
推薦閱讀
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- Python Network Programming Cookbook(Second Edition)
- Python機器學習實戰
- Visual C
- Odoo 10 Implementation Cookbook
- 運維前線:一線運維專家的運維方法、技巧與實踐
- Mastering Apache Storm
- JavaScript從入門到精通(視頻實戰版)
- 貫通Tomcat開發
- R的極客理想:量化投資篇
- Instant GLEW
- Python Social Media Analytics
- Java RESTful Web Service實戰
- Mastering React Test:Driven Development
- 亮劍ASP.NET項目開發案例導航