最近,自己没什么事情做得,于是就折腾了一下cocos2d-x。太难弄的吧俺又不会搞,所以俺就找点简单的倒腾倒腾。于是就琢磨这写一个精灵通过一个按钮来控制他的上下左右的移动。当然,要是精灵移动动着动着移出了窗口的显示区域,那咱看着就没什么意思了撒。总不能就这么干看了黑框上的一个按钮吧。俺也没有什么素材可用的,就只好用cocos2d-x自带的那些个图片来替代替代了。好了,废话不多说了。上文件吧!
.h文件
#ifndef __SpriteMove_H__
#define __SpriteMove_H__
#include "cocos2d.h"
using namespace cocos2d;
class SpriteMove :
public CCLayer
{
public:
SpriteMove(void);
~SpriteMove(void);
CREATE_FUNC(SpriteMove);//autorelese构造方法
bool init();//页面初始化方法
CCSprite *m_pSprite;//俺把这个声明成全局的,方便后面该方向,嘿嘿。
void DirectionChange(CCObject *pSender);//改变方向的方法
};
#endif
.cpp文件
#include "SpriteMove.h"
//构造
SpriteMove::SpriteMove(void)
{
}
//析构
SpriteMove::~SpriteMove(void)
{
}
//页面初始化
bool SpriteMove::init()
{
//首先是的加一个精灵,不然等下拿什么来移动呢- -!
m_pSprite = CCSprite::create("CloseNormal.png");
m_pSprite->setPosition(ccp(m_pSprite->getContentSize().width/2,m_pSprite->getContentSize().height/2));//定到左下角罚站去~~~
addChild(m_pSprite);//为什么要加上去,就不说了吧- -
//既然是通过按钮来控制精灵的移动,那肯定是的有一个按钮的撒~~~
CCMenu *pMenu = CCMenu::create();//按钮要放到菜单里面才能起到按钮的作用的撒,所以……
pMenu->setPosition(CCPointZero);//依旧还是给菜单定个位
addChild(pMenu);//要把菜单加到层上吧,不然怎样知道有菜单呢,是吧~~~
//创建一个按钮-----------没图片咯,那就来一堆关机按钮吧~~~
CCMenuItemImage *pButton = CCMenuItemImage::create(//创建一个CCMenuItemImage按钮,又是create方法呢,autorelease哦,哈哈~~
"CloseNormal.png",//通常情况下显示这个png,NormalImage咯
"CloseSelected.png",//被点了就会变成这个png的,SelectedImage,嗯,很明显的单词啊。
this,
menu_selector(SpriteMove::DirectionChange));//回调方法
pButton->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));//给按钮放到你想放倒的位子去,定位。(CCDirector::sharedDirector()->getWinSize():这个就是获取窗口大小的方法)
pMenu->addChild(pButton);
return true;
}
void SpriteMove::DirectionChange(CCObject *pSender)
{
m_pSprite->setPosition(ccp(m_pSprite->getPositionX()+m_pSprite->getContentSize().width,m_pSprite->getPositionY()));//先就单个方向移动吧,点一下动一次,后面会改成点击后自动移动,再点击就是改变方向。
}
先实现通过点击按钮来让精灵移动,后面会改变代码,实现以下效果:
1、第一次点击按钮启动精灵自动移动(方向随机);
2、之后点击按钮改变精灵的已经方向;
3、精灵在移动的时候不能让其移出窗口范围
//-------------------------------------------------------------------------------------------以上纯属个人理解,如有错误之处,请指正,谢谢!-----------------------------------------------------------------//