转载的链接:http://blog.sina.com.cn/s/blog_940dd50a0101d0ho.html
1.
表现类
表现类就是libgdx中专门负责演员的各种动作的类,其中包括旋转、放缩、移动、淡入、淡出、延迟等动作,是属于基础的动作,其实也可以是作为一些简单的动画理解,下面我们就来针对这个些不同的效果来简单学习下。
这里特别强调一下,Actions中所有的动作都是静态的,这是其实是一种简单的JAVA设计模式,这些动作我们调用就可以了,不需要实例化,只需要赋值就可以了。
(1)AlphaAction 类
API定义:一个负责改变演员的透明度的类。
功能用法:
第一个传入一个要达到的透明度的值,一般是0 - 1 的一个数值,第二个是达到时间,即经过多少时间达到指定的透明度。
alpha(float a, float duration)
示例代码:
AlphaAction
alphah
=
Actions
.
alpha
(
0.6f
,
20
);
(2)ColorAction 类
API定义:一个负责改变演员的颜色的类。
示例代码:
ColorAction
color
=
Actions
.
color
(Color.RED
,
20
);
(3)DelayAction 类
API定义:一个负责延迟执行演员动作的类。
示例代码:
DelayAction
delay
=
Actions
.delay
(
20.0f
);
(4)fade in / fade out 效果
API定义:一个通过在固定的时间内改变演员的透明度,同时实现淡入淡出类,这个其实是AlphaAction的一个特殊情况。
fadeOut(float duration)
示例代码:
AlphaAction
alpha
=
Actions
.
fadeIn
(
duration
);
(5)MoveToAction 类
API定义:一个负责改变演员的位置的类。
示例代码:
MoveToAction
moveto
=
Actions
.
moveTo
(
240
,
160
,
duration
);
(6)RotatoToAction 类
API定义:一个负责实现演员的旋转效果的类。
示例代码:
RotateToAction
rotateto
=
Actions
.
rotateTo
(
rotate
,
duration
)
;
(7)ScaleToAction 类
API定义:一个负责改变演员大小的类,即沿X轴或者Y轴放缩大小,实现改变Actor大小的效果。
功能用法:
第一个需要传入一个演员X轴要达到的放缩比例,第二个是Y轴达到放缩的比例,第三个是经过多少时间达到指定的放缩比例。
scaleTo(float x,
float y,
float duration)
示例代码:
ScaleToAction
scaleto
=
Actions
.
scaleTo
(
scale
,
scale
,
duration
);
以上所讲述的七个类,就是基本的表现类,当然在Api中还有一些其他的类,如moveBy、scaleBy等表现类,当然用法基本和上述同名的类一样,这里就不讲解了,估计大家都能理解。上面的就是我们演员常用的表现类,很多动画效果,都是可以通过不同的表现类来组合实现的,当然组和这些类就需要专门的控制类来管理,下面我们就来讲解下控制类。
2.控制
类
不同的表现类通过组合实现,我们就可以得到不同的动画效果,当然了,这就需要我们使用控制类来管理我们的表现类,控制类相对于表现类来说比较少,只有四个,即:Sequence 类、Repeat 类、Parallel 类、Forever 类。
(1) SequenceAction 类
API定义:按顺序执行Actions,即按传入的Action参数顺序执行。
参数传入的都是需要使用的Action,sequence他会按照传入的参数顺序,全部按顺序执行的。
实例代码:
SequenceAction alpha = Actions.sequence(Actions.fadeIn(duration), endAction );
(2)
ParallelAction
类
API定义:并行执行传入的Action类,无论传入顺序如何,都是同时执行Action。
无论传入的先后如何,都是并行执行的,即同时执行的。
实例代码:
ParallelAction
Paction
=
Actions
.
parallel
(
moveto
,
rotateto
,
alpha
);
(3) RepeatAction
类
API定义:重复执行传入的Action。
个是执行的Action。
实例代码:
RepeatAction
repeatedAction
=
Actions
.
repeat
(
3
,
Paction
);
(4) foreverAction
类
API定义:其实这个也是一个RepeateAction,只不过他的次数是无穷的,他所需要传入的是一个RepeatAction。
型也是一个重复Action。
实例代码:
RepeatAction
forever
Action
=
Actions
.
forever
(RepeatAction
);
以上就是控制类的一些方法,其实他们也是Action,只不过负责的不同而已。当然Actions也是有子类的,我们在下面的例子中也给大家讲解下。
3.Run方法
这里为什么要单独拿出来一个Actions中的方法,单独解释呢?主要是因为这个方法很特别,他虽然也是是一个Action类,但是却封装在了Action类中,表面上看起来很另类,但是其实他是作者的一种经典思维的体现,那么下面我们就来学习下,这个Run方法。
API定义:所有Actions结束后,调用该方法,需要传入Runnable的一个方法。
功能用途:
需要传入一个RUnnnable的参数,同时需要重写Run
run(java.lang.Runnable runnable)
方法,他是唯一一个不同于其他封装在Action里面的方法。
示例代码:
Action
endAction
=
Actions
.
run
(
new
Runnable
()
{
这个方法,他的用途就是在于,他是负责在所有动作结束后,调用的,一般我们做游戏,在所有的动作结束后,需要执行一些我们想要的事件,例如弹出游戏结束的界面,或者一个窗口等等,这样我们就需要使用run方法,来实现这些功能,这也是0.98版本libgdx的一个改进,他删除了之前的compelet的一个接口,而使用了一二润方法,这样很简便,实用。
4.
实例演示
1.游戏素材
(1)星星 圆球(白色的可能看不清)
2.功能分析
(1)设计一个滑屏可以出现星星和圆球效果的项目。
(2)星星和圆球可以实现旋转、移动、淡入淡出效果。
(3)所有动作结束后,打印一句话,解释动作结束后,执行的动作。
3.创建舞台,实例化需要用的纹理图片,同时实现输入接口,来处理触屏事件。
如图:
4.创建一个实例化星星和圆球的方法,同时将Action加入到Image中,image也是一个Actor,大家知道的,同时设置位置。
如图:
6.给演员加入动作,3个动作是不同的,同时渲染。
如图:
7.实现滑屏生成演员,同时演员实现设置的效果。
如图: