创建一个遥感类,继承于节点,挂载相应图片(遥杆背景和遥感)。
在Joystick.h中:
class CJoystick : public Node
{
public:
enum TextureType
{
LOCAL, //单图
PLIST //合图
};
public:
CJoystick();
~CJoystick();
//创建一个带参数的create接口(遥感背景,遥感,图片类型),用于传图片
static CJoystick* create(const string& strBg, string strHandle, TextureType nType = TextureType::LOCAL);
bool initWithData(const string& strBg, string strHandle, TextureType nType = TextureType::LOCAL);
//三个触摸状态
bool onTouchBegan(Touch* pTouch, Event* pEvent);
void onTouchMoved(Touch* pTouch, Event* pEvent);
void onTouchEnded(Touch* pTouch, Event* pEvent);
//判断一个点是否在遥感圆内(圆心、点、半径)
bool isInCircle(const Vec2& center, const Vec2& pos, float fRadius);
CC_SYNTHESIZE(Sprite*, m_pBackground, Background); //遥感背景图
CC_SYNTHESIZE(Sprite*, m_pHandle, Handle); //遥感
CC_SYNTHESIZE(float, m_fRadius, Radius); //遥感半径
CC_SYNTHESIZE_READONLY(Vec2, m_vDir, Dir);
CREATE_FUNC(CJoystick);
private:
//添加触摸事件
void _addTouchEvent();
};
在Joystick.cpp中:
由于遥感是通过玩家的触摸来操控,注册触摸事件_addTouchEvent(三部曲),分别编写触摸点击时、长按时、弹起时的代码,实现不同的操控效果。
CJoystick* CJoystick::create(const string& strBg, string strHandle, TextureType nType /*= TextureType::LOCAL*/)
{
CJoystick* pJoystick = new CJoystick();
if (pJoystick&&pJoystick->initWithData(strBg, strHandle, nType))
{
pJoystick->autorelease();