Cocos2D-x游戏开发之十七:角色类的小结
Cocos2D-x游戏开发之十七:角色类的总结
有了积累之后我们就可以定义自己的有人角色了:
角色的实现:
他是给角色添加了一个监听器来使精灵自己动起来,其中设计另外一个类:
这就是我们角色的所有代码了:
学了这么久了现在还是有点模糊,今天我们把我只之前学习的知识开始做一个简单到 总结:
首先我们先认识一下我们的游戏主角:在开发中我们往往不是把主角设置为一个精灵,因为精灵还有其他属性,所以我们的主角由一个成员变量叫做CCsprite:
同事通常因为给个主角都是有共同点的,所以我们就先抽象出来一个角色实体:
class Entity : public CCNode,public ControlListener { public: Entity(void); ~Entity(void); CCSprite *m_sprite; private: CController *m_control; public: bool BindSprite(CCSprite *sprite); virtual bool SetPlayerPosition(int x,int y) ; virtual CCPoint GetPlayerPosition() ; void SetControl(CController *control); };这里的
CController是一个我们自己定义的类用来实现角色的动作,稍后会为大家介绍。
Entity::Entity(void) { } Entity::~Entity(void) { } bool Entity::BindSprite(CCSprite *sprite) { m_sprite = sprite; this->addChild(m_sprite); return true; } void Entity::SetControl(CController *control) { m_control = control; m_control->SetControlListension(this); } bool Entity::SetPlayerPosition(int x,int y) { this->setPosition(ccp(x,y)); return true; } cocos2d::CCPoint Entity::GetPlayerPosition() { return this->getPosition(); }
有了积累之后我们就可以定义自己的有人角色了:
class Player : public Entity { public: Player(void); ~Player(void); public: CREATE_FUNC(Player); virtual bool init(); void run(); };
角色的实现:
Player::Player(void) { } Player::~Player(void) { } bool Player::init() { return true; } void Player::run() { CCSpriteFrameCache * freamCache = CCSpriteFrameCache::sharedSpriteFrameCache(); freamCache->addSpriteFramesWithFile("run.plist","run.png"); CCSpriteFrame *frame = NULL; CCArray *freamlist =CCArray::create(); for (int i =1; i <= 15 ; i++) { frame = freamCache->spriteFrameByName(CCString::createWithFormat("run%d.png",i)->getCString()); freamlist->addObject(frame); } CCAnimation *anination = CCAnimation::createWithSpriteFrames(freamlist); anination->setLoops(-1); anination->setDelayPerUnit(0.08f); CCAnimate *animate = CCAnimate::create(anination); m_sprite->runAction(animate); }这样我们就成功创建了我们的游戏角色。
接下来只需要在场景的init()函数中添加我们的角色。并运行run函数就会有效果出现。
最后我们说一下
class CController : public CCNode { public: CController(void); ~CController(void); void SetControlListension(ControlListener * listener); protected: ControlListener *m_listener; };
CController::CController(void) { } CController::~CController(void) { } void CController::SetControlListension(ControlListener * listener) { m_listener = listener; }
他是给角色添加了一个监听器来使精灵自己动起来,其中设计另外一个类:
class ControlListener { public: virtual bool SetPlayerPosition(int x,int y)=0; virtual cocos2d::CCPoint GetPlayerPosition()=0; };
这就是我们角色的所有代码了: