cocos2d-x 动作笔记
一 基本概念 1. CCAction是动作类的基类 ,所以动作都派生自这个类,它创建一个对象代表一个动作。动作作用于CCNode,因此任何一个动作都是有CCNode来执行 实例1. 一个图片从一点1秒时间移动到另一点 Size visibleSize = Director::getInstance()->getVisibleSize(); 2. CCAction作为一个基类 ,实质是一个接口(即抽象类),有它派生的实现类大多数都派生自CCFinteTimeAction这个类定义了在有限时间内可以完成的动作。CCFinteTimeAction主要作用于瞬时动作(CCActioninstant)和持续性动作(CCActionIntervel)。 2.1 瞬时动作(CCActionInstant) 2.1.1 CCPlace这个动作时将节点放置到屏幕坐标(100,100)处,再执行曲线运动action1 Size visibleSize = Director::getInstance()->getVisibleSize(); auto sprite02 = Sprite::create("yu.png"); //瞬时动作 指定地点做曲线运动到贝赛尔曲线
2.2.2 CCFlipX和CCFlipY 这个两个动作时将精灵沿x和Y轴反向显示,配合其他动作使用,当一个鱼移动到边界是这个动作就将鱼的来个180度旋转动作需要自己写,它只是把鱼的图片来了一个旋转。感觉这个动作笔记坑爹 CCFiniteTimeAction * flipXAction = CCFlipX::create(true); 2.2.3 CCShow和CChide 这个两个动作分别用于显示和隐藏节点,其作用和设置节点的Visible属性作用一样 CCFiniteTimeAction* hideAction =CCHide::create(); 2.2.4 CCCallFunc 系列动作包括CCCallFunc,CCCallFuncN,CCCallFuncND,以及CCCallFuncO四个动作,用来在动作中进行方法的调用 CCCallFunc 没有参数 CCCallFuncN 1个参数 CCNode * 类型 CCCallFuncND 2个参数 CCNode * 和自定义参数 CCCallFuncO 1个参数 CCObject * 例子: auto curveMove = MoveTo::create(1.0f,300)); 2.3 持续性动作 每一个持续性动作都有两个不同的变种动作分别是具有To和By后缀 后缀为To的是描述节点属性值的绝对变化 ,后缀为By的是描述属性值相对的变化。 根据作用效果不同,可以将持续性动作划分为以下4个大类:位置变化动作;属性变化动作;视觉特效动作;控制动作; 2.3.1位置变化动作 a,CCMoveTo和CCMoveBy:节点做直线运动。设置了动作的时间和终点位置后,节点就会在规定的时间里内,从当前位置移动到设置的终点位置 b,CCJumpTo和CCJumpBy:节点以一定的轨迹跳跃到指定位置 //持续性动作CCJumpTo和CCJumpBy ccBezierConfig bezier; 2.3.2 属性变化动作 a,CCScaleTo和CCScaleBy产生缩放效果 auto action = CCScaleTo::create(2.0f,4); b,CCRotateTo和CCRotateBy旋转效果 auto action2 = CCRotateTo::create(2.0f,90); c,CCFadeIn和CCFadeOut 产生淡入淡出效果 auto action3 = CCFadeIn::create(2.0f); d,CCFadeTo用于设置一段时间内的透明度 auto action7 = CCFadeTo::create(2.0f,125); e,CCTintTo和CCTintBy设置色调变化 auto action6 = CCTintTo::create(2.0f,255,255); 2.3.3 视觉特效动作 a,CCBlink使目标节点闪烁 auto blink = CCBlink::create(2.0f,5); b,CCAnimation播放帧动画 2.3.4控制动作 这类动作包括CCDelayTime、CCRepeat、CCRepeatForever等 a,CCDelayTime可以将动作时间延时一定时间 b,CCRepeat可以把现有的动作重复一定次数 c,CCRepeateForever可以使一个动作不断重复下去 3、复合动作 a,重复动作(CCRepeat/CCRepeatForever) auto curveMove = MoveTo::create(2.0f,Point(100,100)); b,并列动作CCSpawn //并列动作 c,序列 CCSequence d,延时动作 CCDelayTime和序列一起使用 4、变速动作 a,CCSpeed用于线性的改变某个动作的速度 auto curveMove = MoveTo::create(2.0f,Point(visibleSize.width-30,visibleSize.height/2)); //获取标签以后还可以 speed->setSpeed(2.0f); b,CCActionEase速度缓冲,速度变化 CCActionEase系列包括15个动作,可以概括为5类动作:指数缓冲、sine缓冲、弹性缓冲、跳跃缓冲、回震缓冲。每一类动作都有3个不同时期的变换:In、Out和InOut 指性缓冲:easeInExpo、eaSEOutExpo、easeInOutExpo sine缓冲:easeInSine,eaSEOutSine,easeInOutSine 弹性缓冲:easeInElastic,eaSEOutElastic,easeInOutElastic 跳跃缓冲:easeInBounce,eaSEOutBounce,easeInOutBounce 回震缓冲:caseInBack,eaSEOutBack,easeInOutBack
auto curveMove = MoveBy::create(2.0f,visibleSize.height/2)); 缓冲动作一定要使用By相对动作
让动作看起来更平滑流畅 进场动作:由快到慢,快速进入后缓慢停下,在停止前给玩家足够的视觉视觉分辨清楚进入的图像 出场动作:先慢后快,展示了出场趋势和方向后快速移除屏幕,不拖泥带水 收起菜单 CCMoveTo* move =CCMoveTo::create(0.5f,visibleSize.height/2));
在CCScheduler在每一帧更新时,都会触发CCActionManager注册的update方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |