CCAction用于创建各种动作
程序实例1:创建一个延时性动作
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(480,320)); addChild(sprite); //延迟性动作 //第一个参数:精灵运动所花的时间 //第二个参数:精灵运动的终止位置 CCAction* moveto = CCMoveto::create(10,ccp(0,0)); sprite->runAction(moveto); return true;}
执行结果:
程序实例2:创建一个立即性动作
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(480,320)); addChild(sprite); //立即性动作 CCPlace* place = CCPlace::create(ccp(0,0)); sprite->runAction(place); return true;}
程序实例3:动作的顺序封装(先执行延迟性动作,后执行立即性动作)
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(480,320)); addChild(sprite); //延迟性动作(持续一段时间的动作) //第一个参数:精灵运动所花的时间 //第二个参数:精灵运动的终止位置 CCMoveto* moveto = CCMoveto::create(2,0)); //立即性动作 CCPlace* place = CCPlace::create(ccp(100,100)); //动作的顺序封装 CCSequence* seq = CCSequence::create(moveto,place,NulL); sprite->runAction(seq); return true;}
执行结果:
程序实例4:动作的并发封装(延迟性动作和立即性动作一起执行)
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(100,100)); addChild(sprite); //延迟性动作(持续一段时间的动作) //第一个参数:精灵运动所花的时间 //第二个参数:精灵运动的终止位置 CCMoveto* moveto = CCMoveto::create(10,100)); //动作的并发封装 CCSpawn* spawn = CCSpawn::create(moveto,NulL); sprite->runAction(spawn); return true;}
执行结果:
程序实例5:动作反转
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(200,200)); addChild(sprite); //动作反转(从ccp(100,100)-ccp(200,200)-ccp(100,100)) CCMoveBy* moveBy = CCMoveBy::create(10,ccp(100,100)); CCAction* moveBack = moveBy->reverse(); CCAction* action = CCSequence::create(moveBy,moveBack,NulL); sprite->runAction(action); return true;}
执行结果:
程序实例6:精灵跳跃
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(100,100)); addChild(sprite); //精灵跳跃 //第一个参数:完成跳跃所花的时间 //第一个参数:跳跃到的位置 //第一个参数:跳跃的高度 //第一个参数:跳跃的次数 CCJumpBy* jumpBy = CCJumpBy::create(10,ccp(-100,-100),80,5); sprite->runAction(jumpBy); return true;}
执行结果:
程序实例7:精灵旋转
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); //设置精灵的位置(精灵运动的起始位置) sprite->setposition(ccp(100,100)); addChild(sprite); //精灵旋转 CCRotateBy* rotateBy = CCRotateBy::create(10,360); sprite->runAction(rotateBy); return true;}
执行结果:
程序8:sequence的动作反转
#include "Action.h"CCScene* Action::scene(){ CCScene* scene = CCScene::create(); Action* layer = Action::create(); scene->addChild(layer); return scene;}bool Action::init(){ cclayer::init(); //创建精灵 CCSprite* sprite = CCSprite::create("Closenormal.png"); sprite->setposition(ccp(200,200)); addChild(sprite); //sequence的动作反转 CCMoveBy* moveBy = CCMoveBy::create(2,100)); CCJumpBy* jumpBy = CCJumpBy::create(2,5); CCRotateBy* rotateBy = CCRotateBy::create(2,180); CCSequence* seq = CCSequence::create(moveBy,jumpBy,rotateBy,NulL); CCSequence* seq2 = CCSequence::create(seq,seq->reverse(),NulL); //动作执行无限次 sprite->runAction(CCRepeatForever::create(seq2)); return true;}
执行结果:
总结
以上是内存溢出为你收集整理的Cocos2d-X中的CCAction全部内容,希望文章能够帮你解决Cocos2d-X中的CCAction所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)