4. cocos2dx教你做2048 (一)

2048最近火到不行,今天就教大家做一个自己的2048~
2dx版本cocos2d-2.1rc0-x-2.1.3

[b]分析:[/b]
游戏输入:
手势滑动来判断是向哪个方向来滑动.

所以,第一部分我来教大家来做接收手势这部分.


[b]首先,在.h文件里重写生命周期函数[/b]
用来注册和移除委托。

//重写生命周期函数
virtual void onEnter();
virtual void onExit();

实现:

void game2048::onEnter()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
CCLayer::onEnter();
}

void game2048::onExit()
{
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();
}

一定要记得,委托一般都是成对出现的,有注册就要对应有移除。如果你想对一个CCnode进行委托监听,那么创建这个类的时候就可以进行监听了,而当本类退出时也可以对应删除其监听。
所以一班情况,推荐大家将触屏时间的注册与移除代码都写在onEnter和onExit里。如果注册委托不及时移除掉,就有可能造成程序的异常退出。


[b]接下来,定义一些变量,和触摸事件后的方法。[/b]

//坐标
float beginX;
float beginY;
float endX;
float endY;

//滑向上下左右的方法
bool swipeUp();
bool swipeDown();
bool swipeLeft();
bool swipeRight();




bool game2048::swipeUp()
{
CCLOG("doUp");
return true;
}

bool game2048::swipeDown()
{
CCLOG("doDown");
return true;
}

bool game2048::swipeLeft()
{
CCLOG("doLeft");
return true;
}

bool game2048::swipeRight()
{
CCLOG("doRight");
return true;
}


先不写实现,只是为了测试触屏事件,CCLOG即可~


[b]然后,我们重写触屏回调函数[/b]


virtual bool ccTouchBegan(cocos2d::CCTouch *touch, cocos2d::CCEvent *unused_event);
virtual void ccTouchEnded(cocos2d::CCTouch *touch, cocos2d::CCEvent *unused_event);


bool game2048::ccTouchBegan(cocos2d::CCTouch *touch, cocos2d::CCEvent *unused_event)
{
//记录初始点
CCPoint curPoint = touch->getLocation();
touch->getLocationInView();
beginX=curPoint.x;
beginY=curPoint.y;

return true;
}

void game2048::ccTouchEnded(cocos2d::CCTouch *touch, cocos2d::CCEvent *unused_event)
{
//获取X轴和Y轴的移动范围
CCPoint curPoint=touch->getLocation();

endX=beginX - curPoint.x;
endY=beginY - curPoint.y;

//判断X轴和Y轴的移动距离,如果X轴的绝对值大,则向左右滑动,如果Y轴的绝对值大,则向上下滑动
if(abs(endX) > abs(endY))
{
//判断向左还是向右
if(endX + 5 >= 0)
{
swipeLeft();
}
else
{
swipeRight();
}
}
else
{
//判断手势向上还是向下
if(endY + 5 >= 0)
{
swipeDown();
}
else
{
swipeUp();
}
}
}


OK,这样简单的触屏测试就写完了~
看看效果~
[img]http://dl2.iteye.com/upload/attachment/0096/7856/75f24363-c04f-3e2e-813c-65e636f66408.jpg[/img]

OK,接下来更精彩~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值