CCMoveBy与CCMoveTo


   昨天老师布置一个作业,实现一个小球移动的小动画程序,想着cocos2d很容易就可以实现,于是用cocos2d写着玩。精灵要移动有两种方式,一种是利用帧循环,一种是调用API:CCMoveBy或者CCMoveTo .首先简单的介绍这两个函数吧。


     1、都可以实现精灵的移动到达指定地点,(第二个参数即表示目的地)

     2、CCMoveBy是坐标的矢量相加,比如当前点是(x1 ,y1),你设置的参数坐标是(x2 ,y2) ,那么精灵会被移动到(x1 + x2 ,y1 + y2)坐标点上。

    3、CCMoveTo就是把精灵移动到指定的点,简单粗暴。

   

     介绍这两个函数的博文书籍挺多的,我写着也是顺带,下面我主要是想来个实例演示一下,提醒大家在使用时,一定要注意他们之间的区别。首先是CCMoveBy.

<span style="font-size:14px;">void LayerMenu::addCallBack(CCObject *pSend)
{
	CCSprite *spr = CCSprite::create("bullet.png");
	m_batchNode->addChild(spr);
	m_array->addObject(spr);
	spr->setAnchorPoint(ccp(0, 0));
	spr->setPosition(ccp(0, 0));

	CCMoveBy *fs = CCMoveBy::create(3, ccp(winSize.width - 18 , winSize.height /2));
	CCMoveBy *ss = CCMoveBy::create(3, ccp(-winSize.width /2, winSize.height /2 - 18));
	CCMoveBy *ts = CCMoveBy::create(3, ccp(-winSize.width /2 , -winSize.height/2 - 20));
	
	CCCallFuncN *action = CCCallFuncN::create(this, callfuncN_selector(LayerMenu::bulletMoveFinshedCallBack));
	
	CCSequence *seq = CCSequence::create(fs,ss ,ts ,action, NULL);
	spr->runAction(seq);
}</span>
   代码就是使用CCMoveBy实现小球的运动,效果如下图:

   这里需要注意的就是第二个参数的问题,为什么第二个MOVEBY的第二个参数是负的?因为CCMoveBy是坐标的矢量相加,(记得矢量相加么?)这样才可实现上诉效果。


然后是CCMoveTo,这个我就没有写代码,理解了CCMoveBy的坐标变化,那么这个也不在话下了。

写下笔记,提醒自己在一些细节之处,一定要更加小心。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值