文章目录

minko对显示对象的控制均是由控制器所控制的,动画也不例外—AnimationController类是控制对象动画的类。AnimationController构造函数签名

1
public function AnimationController(timelines : Vector.<ITimeline>, loop : Boolean = true)

实现ITimeline接口的vector,是否循环loop。和ITimeline相关的类在package aerys.minko.type.animation.timeline包内。来看看例子中两个类

1
2
3
4
5
6
7
8
9
10
11
var transforms : Vector.<Matrix4x4> = new <Matrix4x4>[
new Matrix4x4(),
new Matrix4x4().appendScale(0.5, 0.5, 0.5),
new Matrix4x4()
];
var alphas : Vector.<Number> = new <Number>[1., .25, 1];
var animationCtrl : AnimationController = new AnimationController(
new <ITimeline>[
new MatrixRegularTimeline('transform', 1000, transforms, true),new ScalarRegularTimeline('material.diffuseTransform.alpha', 1000, alphas)
]
)

MatrixRegularTimeline:矩阵规律变化类,第一个参数是要实现动画对象的属性,先清楚对象类型是否具有此属性,否则会报错这个你自己负责。第二个参数是持续多长时间,单位是毫秒;第三个是Matrix4x4的Vector对象,包含你要改变对象的Matrix4x4属性,是依次执行的,所以上面就是从原来的大小缩小一倍再还原的过程;第四个参数是是否修改缩放,在这里 new Matrix4x4().appendScale(0.5, 0.5, 0.5)就是修改了缩放,必须设置成true了,要不然干吗用这个么个矩阵啊。
ScalarRegularTimeline:
修改对象属性数值的列,第一个参数是属性名,这个属性必须是number或者int,uint等数值类型的,第二个是持续时间;第三个是修改数字的Vector对象,也是依次执行的。

1
2
3
4
5
6
7
8
9
var cube : Mesh = new Mesh(
CubeGeometry.cubeGeometry,
new BasicMaterial({
diffuseMap : TextureLoader.loadClass(EMBED_TEXTURE),
diffuseColor : 0xffffffff,
diffuseTransform : new HLSAMatrix4x4(),
blending : Blending.ALPHA
})
);

在上面的ScalarRegularTimeline中使用属性material.diffuseTransform.alpha,cube 是一个网格,minko内置了好几种网格形状,这里使用立方体形状,材质是BasicMaterial对应上面的material属性,BasicMaterial对象具有diffuseTransform 属性,上面的例子中diffuseTransform对象是HLSAMatrix4x4类型具有alpha属性,和ScalarRegularTimeline类中第一个构造函数是对应的,所以你在写这些动画的时候要清楚你的对象是否真得具有此属性。
实现ITimeline接口的类都大同小异,基本差不多,ScalarTimeline类是一个用时刻表控制的,第二个参数就是时刻表,就是在什么时候做什么事,各个时刻之间是平滑变化的,如果你把两个时刻设置成了一样那么第一个就看不到了。

文章目录