- 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.
推薦閱讀
- Oracle WebLogic Server 12c:First Look
- 零基礎學C++程序設計
- 小創客玩轉圖形化編程
- C++寶典
- Statistical Application Development with R and Python(Second Edition)
- 21天學通C++(第5版)
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- Cocos2d-x Game Development Blueprints
- Mastering AWS Security
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- Nagios Core Administration Cookbook(Second Edition)
- Practical Predictive Analytics
- Maven for Eclipse
- Mastering OAuth 2.0
- 少兒編程輕松學(全2冊)