cocos2d-x精灵的添加和移动

由于工作需要,这几天需要研究下cocos2d-x,貌似有好久没学机器学习了= 。=!

首先要做的是准备工作:把精灵的图片添加到工程中,在visual stadio2010下如图所示:


然后选择你需要的精灵图片,添加就完成了。

创建过程如下:

        
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //返回界面的size,有两个属性width和height,界面的原点在左下方
CCSprite *player = CCSprite::create("Player.png", 
CCRectMake(0, 0, 27, 40) );//创建精灵,create的第二个参数表示图像中对应的像素矩形
 player->setPosition( ccp(player->getContentSize().width/2, winSize.height/2) );    //设置位置点    
this->addChild(player);//把精灵加到当前图层中

精灵的添加主要分下面四步(cocos2d-x中大多数组件的添加都是这四步)

1、通过create创建精灵对象,返回对象的指针

2、检查下对象是否创建成功,cocos2d-x中有一个宏,可以这样用  CC_BREAK_IF( ! sprite );

3、设置精灵对象的坐标,这个坐标是opengl坐标,原点在左下角

4、把相应的组件加到图层中

CCRectMake(int x, int y, int width, int height)这个函数解释下,四个参数分别为矩形左下角的坐标和它的宽度和高度

这样精灵就添加完成了,接下去是精灵的移动。

首先需要设置一个定时器

    this->schedule( schedule_selector(HelloWorld::gameLogic), 1.0 );
void schedule (SEL_SCHEDULE selector, float interval)

两个参数分别是需要调用的回调函数和回调函数响应的时间间隔。

这个函数需要在图层init函数返回前设置完成。


精灵的移动代码如下:

	
        CCSprite *target = CCSprite::create("girls.png", CCRectMake(32*0, 48*0, 32, 48) );
	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
        。。。。。。。。。。。


	CCFiniteTimeAction* actionMove = 
        CCMoveTo::create( (float)actualDuration, 
                           ccp( winSize.width/2, actualY) );
        CCFiniteTimeAction* actionMoveDone = 
        CCCallFuncN::create( this, 
                             callfuncN_selector(HelloWorld::spriteMoveFinished));
        target->runAction( CCSequence::create(actionMove, 
                             actionMoveDone, NULL) );



CCMoveTocreate它时两个参数分别是移动的时间(单位是秒)和移动终点的点坐标。移动这个动作时继承与Action类的,这个类是CCFiniteTimeAction,MoveTo::create它时两个参数分别是移动时间(单位是秒)和终点坐标。然后再设定移动时的回调函数CCCallFuncN::create(Object *,SEL_CallFuncN)两个参数分别是调用回调函数的对象指针和回调函数指针。

最后调用 精灵对象的runAction(CCAction *)函数,CCSequence::Create参数分别是CCFiniteTimeAction表示不同的动作,这个参数是可变的,只需要把动作加进去就行


另外需要注意的是:在cocos2d-x中,所有的组件比如,精灵,布景层,场景,label,动作都是创建在堆中的,所以调用时必须用->来调用

回调函数有五种,分别是:

定义在 cocos2dxincludeselector_protocol.h中


schedule_selector
callfunc_selector
callfuncN_selector
callfuncND_selector
menu_selector

根据不同的需要来选取不同的回调函数类型




原文地址:https://www.cnblogs.com/JackieZhu/p/4190459.html