做了两个动画效果,一个是加速进入 减速退出,另一个是做方波形运动。
界面上有五个按钮 分别是运行动画A,运行动画B,暂停,继续,和停止。
1、分别编程完成动画A和动画B。
2、修改主函数 实现该效果。
原始的主函数 大致为:
此时犯了个错误,动画acc类 和wave类的setInitial中的sample(帧率)并不是固定的,在同一台机子上 也是动态变化。动画走到哪儿 具体得通过计算得出。因此 点击暂停按钮后,不能通过点击继续按键的时间——点击暂停时间,再除以一个固定的帧率,得到走了多少帧。
另外调用类A 与类B流程相似,能抽象。
正确做法:
分别完成类A和类B后,将类A和类B的公共部分提取,编写父类C,类A和类B分别继承父类C。
分别提供四个接口,一是初始化即setInitial,二是暂停接口即onPause,三是继续即onContinue接口,四则是run接口,五 getState。
声明 C c;
在点击A动画的事件中初始化对象c和 进行初始化。
c= new A();
c.setInitial(………);
在按下暂停事件中添加暂停事件的处理方式
if(c != null){
c.onPause();
}
同理 在继续事件中添加:
if(c != null){
c.onContinue
}
这里首先需要先判断c对象是否存在,否则在点击动画A、B前点击暂停和继续按钮会出错。
在onDrawFrame中 则变的更简单。
其中getState是用于判断类A、B中,动画是否播放完毕的接口。当动画播放完毕时,将返回true,否则返回false;
PS:onDrawFrame函数 会被程序不停的调用。