(RotateTo和RotateBy实现旋转)
a. RotateTo: 将对象旋转到某个角度,不会保留原来的角度
b. RotateBy: 将对象旋转了某个角度,保留原来的角度
注意:
X轴和Y轴是平面坐标系的两个轴。
创建RotateTo对象:(旋转到某个角度)
(1) RotateTo::create(旋转所需时间,沿X轴旋转的角度,沿Y轴旋转的角度);
(2) RotateTo::create(旋转所需时间,同时沿X,Y轴旋转的时间);
创建RotateBy对象:(旋转了某个角度)
(1) RotateBy::create(旋转所需时间,沿X轴旋转的角度,沿Y轴旋转的角度);
(2) RotateBy::create(旋转所需时间,同时沿X,Y轴旋转的时间);
//RotateTo实现旋转,不能逆向执行动作 auto rotateTo = RotateTo::create(0.2,180,0); sprite->runAction(rotateTo); auto rotates = RotateTo::create(0.2,80); sprite->runAction(rotates);
//RotateTo实现旋转 auto rotateBy = RotateBy::create(0.2,180,0); sprite->runAction(rotateBy); auto rotates = RotateBy::create(0.2,80); sprite->runAction(rotates);
//RotateTo实现旋转,延时2秒,执行逆向动作 auto rotateBy = RotateBy::create(0.2,180,0); sprite->runAction(rotateBy); //延迟动作 auto time = DelayTime::create(2); auto seq = Sequence::create(rotateBy,time,rotateBy->reverse(),NULL); sprite->runAction(seq);
(JumpTo和JumpBy实现跳跃)
a. JumpTo : 让对象跳跃到某个位置,不保存原来的位置
b. JumpBy: 让对象跳跃了多少距离,保存原来的位置
创建JumpTo对象:
JumpTo::create(动作执行时间, 跳跃到的位置, 每次跳跃的高度,跳跃的次数);
跳跃的次数: 当前点到目的点之间要跳跃多少次。
每次跳跃距离= 总距离/跳跃的次数。
总距离 = 跳跃到的位置-当前位置。
创建JumpBy对象:
JumpBy::create(动作执行时间,每次跳跃的距离,每次跳跃的高度,跳跃的次数);
跳跃的次数: 当前点到目的点之间要跳跃多少次。
总距离 = 当前的位置 + 跳跃次数 * 每次跳跃的距离
//JumpTo/JumpBy实现跳跃 auto jumpTo = JumpTo::create(4,Vec2(visibleSize.width/4+180,visibleSize.height/2-200),60,3); sprite->runAction(jumpTo); auto jumpBy = JumpBy::create(4,Vec2(visibleSize.width/4+180, 0),60,3); sprited->runAction(jumpBy);
(ScaleTo和ScaleBy实现缩放)------->不常用
(1). 创建ScaleTo对象,
a. X或者Y轴缩放对象(duration:执行动作的时间, X轴的比例,Y轴的比例 )
static ScaleTo* create(float duration,float x,float y);
b. X和Y轴同时缩放对象
static ScaleTo* create(float duration,float s)
(2). 创建ScaleBy对象,
a. X或者Y轴缩放对象(duration:执行动作的时间, X轴的比例,Y轴的比例 )
static ScaleBy* create(float duration,float x,float y);
b. X和Y轴同时缩放对象
static ScaleBy* create(float duration,float s)
注意:
a. ScaleTo---->不会保留原有对象的大小, 对象总共扩大多少倍。
b. ScaleBy---->保留原有对象的大小,对象在原有基础继续扩大多少倍。
(SkewTo和SkewBy实现倾斜变形)
(1). 创建SkewTo对象,
a. t: 动作执行时间 sx: 建议取值-90~90 sy: 建议取值-90~90
------------------------------------自己测试一下
sx: 取值为负时, X轴上面的部分向左偏移,X轴下面的部分向右偏移;
sx: 取值为正时, X轴上面的部分向右偏移,X轴下面的部分向左偏移;
sy: 取值为负时, Y轴右面的部分向下偏移,Y轴下面的部分向上偏移;
sy: 取值为正时, Y轴右面的部分向上偏移,Y轴下面的部分向下偏移;
stattic SkewTo* create(float t, float sx, float sy);
(1). 创建SkewBy对象,
a. t: 动作执行时间 sx: 建议取值-90~90 sy: 建议取值-90~90
------------------------------------自己测试一下
sx: 取值为负时, X轴上面的部分向左偏移,X轴下面的部分向右偏移;
sx: 取值为正时, X轴上面的部分向右偏移,X轴下面的部分向左偏移;
sy: 取值为负时, Y轴右面的部分向下偏移,Y轴下面的部分向上偏移;
sy: 取值为正时, Y轴右面的部分向上偏移,Y轴下面的部分向下偏移;
stattic SkewBy* create(float t, float sx, float sy);
注意:
a. SkewTo---->不会保留原有对象的形状, 对象总共倾斜多少倍。
b. SkewBy---->保留原有对象的形状,对象在原有基础继续倾斜多少倍。
(FadeIn与FadeOut实现渐隐渐出)
(1). FadeIn : 逐渐淡入
static FadeIn* create(float t);
(2). FadeOut: 逐渐淡出
static FadeOut* create(float t);
注意:
a. FadeIn: 逐渐淡入。但是Cocos2dx 中只要addchild(),就会显示出来,我们应该将对象的透明度设为0,然后执行FadeIn动作。
sprite->setOpacity(0);//将图片设置为透明 //FadeIn与FadeOut auto fadeIn = FadeIn::create(5); sprite->runAction(fadeIn);b. 表示动作同时进行
sprite->setOpacity(0);//将图片设置为透明
//FadeIn与FadeOut
auto fadeIn = FadeIn::create(5);
sprite->runAction(fadeIn);
auto fadeOut = FadeOut::create(5);
sprite->runAction(fadeOut);
(TintBy和TintTo实现对象着色)
(1) 创建TintTo对象:
static TintTo* create(float t, GLubyte red, GLubyte green, GLubyte blue); //red,green,blue的取值是从0~255,这3个值是颜色的绝对值
对象执行这个动作, 对象的颜色为设置的这个颜色。
(2) 创建TintBy对象
static TintBy* create(float t, GLshort deltaRed, GLshort deltaGreen, GLshort deltaBlue); //deltaRed,deltaGreen,deltaBlue的取值是从0~255,这3个值是颜色的变化值
对象原来的值为(255,255,255)------>执行这个动作,对象原来的值发生变化
------对象原来的值red = 255 ,green =255, blue = 255
------动作的值deltaRed = 0, deltaGreen = 0, deltaBlue = -255
-------执行动作后对象的值-->ed = 255 ,green =255, blue = 0 ,对象会显示黄色
(BLink实现对象闪烁)----->修改透明度0~255; 0:透明 ; 255:完全不透明
(1) 创建BLink对象
static Blink* create(float duration, int blinks); //dutation: 表示执行动作需要的时间 blinks: 闪烁的次数
(CardinalSplineBy和CardinalSplineTo 实现 贝赛尔曲线运动)
(1) 创建CardinalSplineBy对象:
//duration: 动作执行时间 PointArray: 控制点列表 tension: 控制点的曲线样式 >1: 向外弯曲 <1: 向内弯曲 =1: 直线
//points最好放4个点,第一个点表示起点,最后一个点表示终点; 其中这些点都是相对于对象的起始坐标来计算的。
static CardinalSplineBy* create(float duration, PointArray* points, float tension);
(2) 创建CardinalSplineTo对象:
//duration: 动作执行时间 PointArray: 控制点列表 tension: 控制点的曲线样式 >1: 向外弯曲 <1: 向内弯曲 =1: 直线
//points最好放4个点,第一个点表示起点,最后一个点表示终点;其中这些点都是目的点,不是相对点
static CardinalSplineTo* create(float duration, PointArray* points, float tension);
auto array = PointArray::create(4); array->addControlPoint(Vec2(0,0)); array->addControlPoint(Vec2(100,-100)); array->addControlPoint(Vec2(-100,-200)); array->addControlPoint(Vec2(0,-400)); auto cardinal = CardinalSplineBy::create(10,array,0); sprite->runAction(cardinal);
(动作: 对象的属性的变化,如位置,大小;根据变化是否需要时间,-->瞬时动作和延时动作)