cocos 常用动作函数
【一】:Action是什么
顾名思义,Action动作就是我们用来控制各个元素的命令,我们通过这些命令来控制各个控件向上,向下,插入...艹邪恶了,好了知道是什么了就行了。 【二】:常用动作函数 1.常用动作操作函数 [1]:runAction("action对象"); //执行一个action动作对象 [2]:CCDirector::sharedDirector()->getActionManger()->pauseTarget("对象"); //暂停一个对象的动作 [3]:CCDirector::sharedDirector()->getActionManager()->pauseAllRunningActions(); //暂停所有对象的动作 [4]:pauseSchedulerAndActions(); //暂停所有对象的动作及其更新函数 [5]:CCDirector::sharedDirector()->getActionManager()->resumeTarget("对象"); //继续一个对象的动作 [6]:CCDirector::sharedDirector()->getActionManager()->resumeTargets("CCSet对象"); //继续所有对象的动作 [7]:resumeSchedulerAndActions(); //继续所有对象的动作及其更新函数 [8]:stopAction("action对象"); //停止对象的动作 [9]:stopActionByTag("tag值"); //停止目标对象的动作 [10]:stopAllActions(); //停止所有对象的动作 [11]:CCDirector::sharedDirector()->getActionManager()->removeAction("action对象"); //删除动作对象 [12]:CCDirector::sharedDirector()->getActionManager()->removeActionByTag("tag值"); [13]:CCDirector::sharedDirector()->getActionManager()->removeAllActions(); //删除所有动作对象 [14]:CCDirector::sharedDirector()->getActionManager()->removeAllActionsFromTarget("tag值"); //删除所有相同tag值得动作对象 2.常用动作函数 怎么记呢?这里孤狼我给大家总结了个规律:
[1]:CCMoveTo::create("时间","坐标"); //几秒后移动到坐标点 [2]:CCMoveBy::create("时间",51); font-family:Arial; font-size:14px">[3]:CCScaleTo::create("时间","缩放比例"); //几秒后缩放到指定大小(1:原大小;大于1:放大;小于1:缩小) [4]:CCScaleBy::create("时间",51); font-family:Arial; font-size:14px">[5]:CCRotateTo::create("时间","角度"); //几秒后旋转多少度[0,360] [6]:CCRotateBy::create("时间",51); font-family:Arial; font-size:14px">[7]:CCSkewTo::create("时间","x轴角度","y轴角度"); //几秒后倾斜指定角度 [8]:CCSkewBy::create("时间",51); font-family:Arial; font-size:14px">[9]:CCJumpTo::create("时间","目标位置","高度","到目标所需次数"); //几秒后经过几次跳到指定位置 [10]:CCJumpBy::create("时间",51); font-family:Arial; font-size:14px">[11]:CCBezierTo::create("时间","ccBezierConfig构造体"); //几秒内按指定贝塞尔曲线运动 [12]:CCBezierBy::create("时间",51); font-family:Arial; font-size:14px">[13]:CCTintTo::create("时间","红","绿","蓝"); //几秒后变为指定颜色 [14]:CCTintBy::create("时间",51); font-family:Arial; font-size:14px">[15]:CCCardinalSplineTo::create("时间","控制点坐标数组","拟合度"); //几秒内按曲线运动(拟合度0最柔和) [16]:CCCardinalSplineBy::create("时间",51); font-family:Arial; font-size:14px">[17]:CCCatmullRomTo::create("时间","控制点坐标数组"); //几秒内完成一个样条插值轨迹(直线) [18]:CCCatmullRomBy::create("时间",51); font-family:Arial; font-size:14px">[19]:CCFadeIn::create("时间"); //渐显 [20]:CCFadeOut::create("时间"); //渐消 [21]:CCEaseBounceIn::create("action对象"); //让目标动作具有反弹效果,从起点反弹 [22]:CCEaseBounceOut::create("action对象"); //让目标动作具有反弹效果,从终点反弹 [23]:CCEaseBounceInOut::create("action对象"); //让目标动作具有反弹效果,起点终点都反弹 [24]:CCEaseBackIn::create("action对象"); //让目标动作具有回力效果,起点作为回力点 [25]:CCEaseBackOut::create("action对象"); //让目标动作具有回力效果,终点作为回力点 [26]:CCEaseBackInOut::create("action对象"); //让目标动作具有回力效果,起点终点都作为回力点 [27]:CCEaseElasticIn::create("action对象"); //让目标动作具有弹力效果,起点具有弹性 [28]:CCEaseElasticOut::create("action对象"); //让目标动作具有弹力效果,终点具有弹性 [29]:CCEaseElasticInOut::create("action对象"); //让目标动作具有弹力效果,起点终点都具有弹性 [30]:CCEaseExponentialIn::create("action对象"); //让目标动作缓慢开始 [31]:CCEaseExponentialOut::create("action对象"); //让目标动作缓慢结束 [32]:CCEaseExponentialInOut::create("action对象"); //让目标动作缓慢开始并缓慢结束 [33]:CCEaseSineIn::create("action对象"); //让目标动作由慢到快 [34]:CCEaseSineOut::create("action对象"); //让目标动作由快到慢 [35]:CCEaseSineInOut::create("action对象"); //让目标动作由慢到快再到慢 [36]:CCEaseRateAction::create("action对象","速度"); //为目标动作设置速度 [37]:CCSpeed::create("action对象","倍数"); //为目标动作速度翻倍 [38]:CCSpawn::create("action对象1","action对象2".....); //多个不同类动作同时执行(NUll结尾) [39]:CCSequence::create("action对象1","action对象2"......); //多个目标动作顺序执行(NUll结尾) [40]:CCBlink::create("时间","次数"); //几秒内闪烁几次 [41]:CCRepeat::create("action对象",51); font-family:Arial; font-size:14px"> //重复目标动作 [42]:CCRepeatForever::create("action对象"); //永久重复目标动作 [43]:CCDelayTime::create("时间"); //延迟几秒执行(在顺序执行CCSequence中延迟哦) [44]:CCFollow::create("跟随对象","跟随范围"); //镜头跟着目标走,超过范围就结束。 [45]:CCOrbitCamera::create("时间","起始半径","半径差","起始z角","旋转z角","起始x角","旋转x角"); //几秒内球面运动 [46]:CCCallFunc::create("对象","回调函数"); //创建一个回调动作(不带参数) [47]:CCCallFuncN::create("对象",51); font-family:Arial; font-size:14px"> //创建一个回调动作(传调用者为参数) [48]:CCCallFuncND::create("对象","回调函数","任意参数"); //创建一个回调动作(带2个参数) 【三】:示例 1.我们来创建一个项目Actiondemo 2.加载一些图片用来做例子 3.疯狂编码: Actiondemo.h 1.我们写3个回调函数 void funback1(); void funback2(CCNode * node); void funback3(CCNode * node,void * a); Actiondemo.cpp 1.加载两张图片进来作为精灵。 2.每个方法都用一下 CCSize mysize=CCDirector::sharedDirector()->getWinSize(); //首先我们创建两个Sprite对象,我们来操控它 CCSprite * sp1 = CCSprite::create("fp.png"); CCSprite * sp2 = CCSprite::create("p.png"); sp1->setPosition(ccp(100,mysize.height/2)); sp2->setPosition(ccp(mysize.width-100,mysize.height/2-100)); this->addChild(sp1); this->addChild(sp2); //创建一个CCMoveTo操作(给绝对地址) CCActionInterval * a1=CCMoveTo::create(5.0f,ccp(mysize.width-100,242)">sp1->runAction(a1); //创建一个CCMoveBy操作(给相对地址) CCActionInterval * a2=CCMoveBy::create(5.0f,ccp(-300,0)); sp2->runAction(a2); //sp2->runAction(a2->reverse()); 这个会向相反的方向跑哦 //创建一个CCScaleTo操作 CCActionInterval * a3=CCScaleTo::create(5.0f,2); sp1->runAction(a3); //创建一个CCMoveBy操作 CCActionInterval * a4=CCScaleBy::create(5.0f,0.5); sp2->runAction(a4); //创建一个CCRotateTo操作 CCActionInterval * a5=CCRotateTo::create(5.0f,180); sp1->runAction(a5); //创建一个CCRotateBy操作 CCActionInterval * a6=CCRotateBy::create(5.0f,242)">sp2->runAction(a6); //创建一个CCSkewTo操作 CCActionInterval * a7=CCSkewTo::create(5.0f,180,242)">sp1->runAction(a7); //创建一个CCSkewBy操作 CCActionInterval * a8=CCSkewBy::create(5.0f,242)">sp2->runAction(a8); //创建一个CCJumpTo操作 CCActionInterval * a9=CCJumpTo::create(5.0f,ccp(200,300),3); sp1->runAction(a9); //创建一个CCJumpBy操作 CCActionInterval * a10=CCJumpBy::create(5.0f,242)">sp2->runAction(a10); //创建CCBezier ccBezierConfig bezierconfig; bezierconfig.controlPoint_1=CCPointMake(200,100); bezierconfig.controlPoint_2=CCPointMake(300,200); bezierconfig.endPosition=CCPointMake(340,250); //创建一个CCBezierTo操作 CCActionInterval * a11=CCBezierTo::create(5.0f,bezierconfig); sp1->runAction(a11); //创建一个CCBezierBy操作 CCActionInterval * a12=CCBezierBy::create(5.0f,242)">sp2->runAction(a12); //创建一个CCTintTo操作 CCActionInterval * a13=CCTintTo::create(5.0f,255,100,255); sp1->runAction(a13); //创建一个CCTintBy操作 CCActionInterval * a14=CCTintBy::create(5.0f,150,150); sp2->runAction(a14); //创建point数组 CCPointArray * pa=CCPointArray::create(5); pa->addControlPoint(ccp(100,10)); pa->addControlPoint(ccp(200,250)); pa->addControlPoint(ccp(110,180)); pa->addControlPoint(ccp(300,100)); //创建一个CCCardinalSplineTo操作 CCActionInterval * a15=CCCardinalSplineTo::create(5.0f,pa,0); sp1->runAction(a15); //创建一个CCCardinalSplineBy操作 CCActionInterval * a16=CCCardinalSplineBy::create(5.0f,242)">sp2->runAction(a16); CCPointArray * pa2=CCPointArray::create(5); pa2->addControlPoint(ccp(100,242)">pa2->addControlPoint(ccp(200,242)">pa2->addControlPoint(ccp(110,242)">pa2->addControlPoint(ccp(300,80)">//创建一个CCCatmullRomTo操作 CCActionInterval * a17=CCCatmullRomTo::create(5.0f,pa2); sp1->runAction(a17); //创建一个CCCatmullRomBy操作 CCActionInterval * a18=CCCatmullRomBy::create(5.0f,242)">sp2->runAction(a18); //创建一个CCFadeIn操作 CCActionInterval * a19=CCFadeIn::create(5.0f); sp1->runAction(a19); //创建一个CCFadeOut操作 CCActionInterval * a20=CCFadeOut::create(5.0f); sp2->runAction(a20); 这里不要和上面的几个sp对象混了,记得把上面的注释掉。 如果懒得动就去的我博客http://gl.paea.cn直接下载DEMO //创建4个CCMoveTo操作,1个CCScaleTo操作和三个精灵plan1,plan2,plan3 CCSprite * plan1=CCSprite::create("fp.png"); CCSprite * plan2=CCSprite::create("fp.png"); CCSprite * plan3=CCSprite::create("fp.png"); plan1->setPosition(ccp(100,mysize.height/2+100)); plan2->setPosition(ccp(100,242)">plan3->setPosition(ccp(100,242)">this->addChild(plan1,1,500); this->addChild(plan2,501); this->addChild(plan3,502); CCActionInterval * ac1=CCMoveTo::create(5.0f,242)">CCActionInterval * ac2=CCMoveTo::create(5.0f,ccp(mysize.width,242)">CCActionInterval * ac3=CCMoveTo::create(5.0f,242)">CCActionInterval * ac4=CCMoveTo::create(5.0f,ccp(mysize.width*2,242)">CCActionInterval * ac5=CCScaleTo::create(5.0f,1.5f); //创建一个CCEaseBounceIn操作 CCActionInterval * a21=CCEaseBounceIn::create(ac1); plan1->runAction(a21); //创建一个CCEaseBounceOut操作 CCActionInterval * a22=CCEaseBounceOut::create(ac2); plan2->runAction(a22); //创建一个CCEaseBounceInOut操作 CCActionInterval * a23=CCEaseBounceInOut::create(ac3); plan3->runAction(a23); CCActionInterval * a24=CCEaseBounceIn::create(ac1); plan1->runAction(a24); CCActionInterval * a25=CCEaseBounceOut::create(ac2); plan2->runAction(a25); CCActionInterval * a26=CCEaseBounceInOut::create(ac3); plan3->runAction(a26); //创建一个CCEaseBackIn操作 CCActionInterval * a24=CCEaseBackIn::create(ac1); //创建一个CCEaseBackOut操作 CCActionInterval * a25=CCEaseBackOut::create(ac2); //创建一个CCEaseBackInOut操作 CCActionInterval * a26=CCEaseBackInOut::create(ac3); //创建一个CCEaseElasticIn操作 CCActionInterval * a27=CCEaseElasticIn::create(ac1); plan1->runAction(a27); //创建一个CCEaseElasticOut操作 CCActionInterval * a28=CCEaseElasticOut::create(ac2); plan2->runAction(a28); //创建一个CCEaseElasticInOut操作 CCActionInterval * a29=CCEaseElasticInOut::create(ac3); plan3->runAction(a29); //创建一个CCEaseExponentialIn操作 CCActionInterval * a30=CCEaseExponentialIn::create(ac1); plan1->runAction(a30); //创建一个CCEaseExponentialOut操作 CCActionInterval * a31=CCEaseExponentialOut::create(ac2); plan2->runAction(a31); //创建一个CCEaseExponentialInOut操作 CCActionInterval * a32=CCEaseExponentialInOut::create(ac3); plan3->runAction(a32); //创建一个CCEaseSineIn操作 CCActionInterval * a33=CCEaseSineIn::create(ac1); plan1->runAction(a33); //创建一个CCEaseSineOut操作 CCActionInterval * a34=CCEaseSineOut::create(ac2); plan2->runAction(a34); //创建一个CCEaseSineInOut操作 CCActionInterval * a35=CCEaseSineInOut::create(ac3); plan3->runAction(a35); //创建一个CCEaseRateAction操作 CCActionInterval * a36=CCEaseRateAction::create(ac1,242)">plan1->runAction(a36); //创建一个CCSpeed操作 CCSpeed * a37=CCSpeed::create(ac2,30); plan2->runAction(a37); //创建一个CCSpawn操作 CCFiniteTimeAction * a38=CCSpawn::create(ac3,ac5,NULL); plan3->runAction(a38); //创建一个CCSequence操作 CCFiniteTimeAction * a39=CCSequence::create(ac1,ac2,242)">plan3->runAction(a39); 创建一个CCBlink操作 CCActionInterval * a40=CCBlink::create(1,242)">plan3->runAction(a40); //创建一个CCRepeat操作 CCFiniteTimeAction * a41=CCRepeat::create(a40,242)">plan3->runAction(a41); //创建一个CCRepeatForever操作 CCFiniteTimeAction * a42=CCRepeatForever::create(a40); plan3->runAction(a42); //创建一个CCDelayTime操作,在顺序执行中延迟哦 CCActionInterval * a43=CCDelayTime::create(2); CCFiniteTimeAction * a433=CCSequence::create(ac1,a43,242)">plan3->runAction(a433); //创建一个CCFollow操作 //CCRectMake(x,y,宽,高) //创建背景参照物 CCSprite * czsp=CCSprite::create("HelloWorld.png"); czsp->setPosition(ccp(mysize.width/2,242)">this->addChild(czsp,-1); plan2->runAction(ac4); CCFollow * a44=CCFollow::create(plan2,CCRectMake(0,960,320)); this->runAction(a44); //创建一个CCOrbitCamera操作 CCActionInterval * a45=CCOrbitCamera::create(5,50,90); plan3->runAction(a45); //创建一个CCCallFunc操作 //还要实现回调里的操作,看下面的回调函数funback1 CCCallFunc * back1=CCCallFunc::create(this,callfunc_selector(Actiondemo::funback1)); CCFiniteTimeAction * cq1=CCSequence::create(ac1,back1,242)">plan1->runAction(cq1); //创建一个CCCallFuncN操作 CCCallFuncN * back2=CCCallFuncN::create(this,callfuncN_selector(Actiondemo::funback2)); CCFiniteTimeAction * cq2=CCSequence::create(ac1,back2,242)">plan1->runAction(cq2); //创建一个CCCallFuncND操作 CCCallFuncND * back3=CCCallFuncND::create(this,callfuncND_selector(Actiondemo::funback3),(void *)10); CCFiniteTimeAction * cq3=CCSequence::create(ac1,back3,242)">plan1->runAction(cq3);
3.先实现3个回调函数
这里说一下CCNode。 任何一个能被绘制或者包含能被绘制的东西都是一个CCNode。 最常用的CCNode有:CCScene,CCLayer,CCSprite,CCMenu. 一个CCNode的主要特性包括: 1.他们能够容纳别的CCNode节点,比如能addChild,getChildByTag,removeChild 。 2.他们能定期的调度回调函数,比如能schedule,unschedule等。 3.他们能执行动作,比如runAciton,stopAction等。 一些节点能给自己或他们的子几点提供一些额外额功能。 所以这里我们回调函数funback2中node就等于plan1,可以直接调用 |
如果用不好就去的我博客http://gl.paea.cn直接下载DEMO
void Actiondemo::funback1(){
CCSprite * sp=(CCSprite *)this->getChildByTag(500);
CCActionInterval * rote=CCRotateTo::create(5.0f,242)">sp->runAction(rote);
}
void Actiondemo::funback2(CCNode * node){
node->runAction(rote);
void Actiondemo::funback3(CCNode * node,void * a){
int num=(int)a;//这里要引用下指针
CCActionInterval * rote=CCRotateTo::create(num,242)">原文:http://gl.paea.cn/contents/fdb2fb923944b2e6.html
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!