Cocos2dx <基础> 动作(2)

(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);

(动作: 对象的属性的变化,如位置,大小;根据变化是否需要时间,-->瞬时动作和延时动作)



   

     


          




          

  

 









    






猜你喜欢

转载自blog.csdn.net/wue1206/article/details/80061406
今日推荐