CCAction用于创建各种动作
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, ccp(0,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, ccp(0,0)); //立即性动作 CCPlace* place = CCPlace::create(ccp(100,100)); //动作的并发封装 CCSpawn* spawn = CCSpawn::create(moveTo, place, 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, ccp(100, 100)); CCJumpBy* jumpBy = CCJumpBy::create(2, ccp(-100, -100), 80, 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; }
执行结果:
时间: 2024-10-10 00:00:41