动画管理类。
通过浏览器帧(浏览器固定每秒会渲染60帧)的概念,实现对用户动画进行播放、停止等操作。 此类只负责时间上的控制,具体动画效果需要用户在初始化时的回调函数内部进行实现。
注1:动画里面的时间没有单位的约束,唯一需要遵守的就是开始时间和结束时间必须为数字, 并且开始时间需要小于等于结束时间,例如如下方式: 用户数据可能是公元1000年到2000年某地区某物的变化,数据值精确到年, 那么在存储数据时就可以直接在数据库存放1000到2000的数字,此时单位等价于是年, 在客户端设置起始时间为1000,结束时间是2000,速度设置为1, 那么表示动画按照每次播放1年(可以通过setSpeed进行修改)的变化从公元1000年开始到公元2000年为止,默认每1秒会播放60次(即60年的数据,可以通过 setFrameRate 修改每秒播放次数), 播放完所有数据总共需要1000/60秒,即16.67秒。
注2:setSpeed()方法可以修改播放速度,即修改的是每次播放的数据之间的时间间隔,指在用户的数据之间没两次播放的时间跳跃, 如上举例中 setSpeed(10),则表示每次播放10年的数据; setFrameRate()方法可以修改帧率,表示修改每秒播放的次数,如上例 中 setFrameRate(1),则表示每秒播放一次,那么每次播放10年,播放完1000-2000年就需要100秒。
SuperMap. |
动画管理类。 |
Constants | |
EVENT_TYPES | {Array(String)} 此类支持的事件类型。 |
Properties | |
events | {SuperMap.Events} |
Constructor | |
SuperMap. |
动画管理类构造函数。 |
Functions | |
destroy | 销毁Animator对象,释放资源。 |
getCurrentTime | 获取当前播放时间 |
getEndTime | 获取结束播放时间 |
getFrameRate | 获取帧率。 表示每秒播放的次数,默认为60,即每秒播放60次。 |
getOldTime | 获取上一帧播放时间 |
getRepeat | 获取是否重复循环播放,默认是true。 |
getReverse | 获取是否反向播放,默认是false。 |
getRunning | 获取动画运行状态 |
getSpeed | 获取速度。 |
getStartTime | 获取起始播放时间 |
pause | 暂停播放动画 |
redraw | 重新绘制一帧。 通过此方法可以实现刷新效果。 |
setCurrentTime | 设置当前播放时间 |
setEndTime | 设置结束播放时间,设置完成后如果当前播放时间大于结束播放,则从起始播放时间开始播放 |
setFrameRate | 设置帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。 |
setRepeat | 设置是否重复循环播放 |
setReverse | 设置是否反向播放 |
setSpeed | 设置速度。 |
setStartTime | 设置起始播放时间,设置完成后如果当前播放时间小于起始播放时间,则从起始播放时间开始播放 |
start | 开始播放动画 |
stop | 停止播放动画,停止后返回起始播放状态 |
toggle | 开关切换,切换的是开始和暂停 |
动画管理类构造函数。
var animator; //初始化动画管理类 function init() { //设置播放时间从0到1000秒,速度为每帧播放10秒的数据 animator = new SuperMap.Animator(callbackFunction,{ speed:10,//设置速度 startTime:0,//设置开始时间 endTime:1000//设置结束时间 }); } //回调函数 function callbackFunction(){ //每帧具体实现的渲染代码 //如下: //获取canvas var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); cxt.fillStyle="#FF0000"; cxt.beginPath(); //根据时间的不同改变坐标位置 var x = animator.getCurrentTime()*2; var y = animator.getCurrentTime()*0.5; //绘制一个圆 cxt.arc(x,y,15,0,Math.PI*2,true); cxt.closePath(); cxt.fill(); } //开始播放 function startAnimator(){ animator.start(); } //停止播放 function stopAnimator(){ animator.stop(); }
callback | {Function} 动画渲染回调函数,必设属性。具体的动画效果需要用户在此回调函数里面实现。 |
options | {Object} 该类开放的可选属性。 |
speed | {Number} 播放速度。不能小于0,默认为1(表示每帧渲染的数据之间的间隔为1),设置越大播放速度越快。 |
startTime | {Number} 播放的起始时间,必须为数字,且小于等于endTime。如果不设置,初始化时为0,建议设置。 |
endTime | {Number} 播放的结束时间,必须为数字,且大于等于startTime。如果不设置,初始化时以当前时间进行设置,建议设置。 |
repeat | {Boolean} 是否重复循环播放。默认为true。 |
reverse | {Boolean} 是否反向播放。默认为false。 |
frameRate | {Number} 帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。 由于浏览器每秒渲染60帧是固定的,所以我们只能设置每秒播放的次为小于等于60, 大于等于0的正数。 |
setFrameRate:function( frameRate )
设置帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。
帧率设置的越高,每秒渲染的次数越多,动画连贯性越好,性能越低; 帧率设置的越低,每秒渲染的次数越少,动画连贯性越差,性能越好。
frameRate | {Number} 由于浏览器每秒渲染60帧是固定的,所以我们只能设置每秒播放的次为小于等于60, 大于等于0的正数。 比如:设置 animator.setFrameRate(30),表示每秒播放动画30次,也就是浏览每渲染两帧,动画播放一次; 如果希望动画播放很慢,可以设置为如 animator.setFrameRate(1/7),表示每秒播放1/7次,也就是每7秒播放一次。 |
{Boolean} true代表设置成功,false设置失败(frameRate不在0到60之间时失败)
开始播放动画
start:function ()
暂停播放动画
pause:function ()
停止播放动画,停止后返回起始播放状态
stop:function ()
开关切换,切换的是开始和暂停
toggle:function ()
重新绘制一帧。 通过此方法可以实现刷新效果。
redraw:function()
设置速度。
setSpeed:function( speed )
获取速度。
getSpeed:function()
设置起始播放时间,设置完成后如果当前播放时间小于起始播放时间,则从起始播放时间开始播放
setStartTime:function( startTime )
获取起始播放时间
getStartTime:function()
设置结束播放时间,设置完成后如果当前播放时间大于结束播放,则从起始播放时间开始播放
setEndTime:function( endTime )
获取结束播放时间
getEndTime:function()
设置当前播放时间
setCurrentTime:function( currentTime )
获取当前播放时间
getCurrentTime:function()
获取上一帧播放时间
getOldTime:function()
设置是否重复循环播放
setRepeat:function( repeat )
获取是否重复循环播放,默认是true。
getRepeat:function()
设置是否反向播放
setReverse:function( reverse )
获取帧率。 表示每秒播放的次数,默认为60,即每秒播放60次。
getFrameRate:function()
设置帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。
setFrameRate:function( frameRate )
获取是否反向播放,默认是false。
getReverse:function()
获取动画运行状态
getRunning:function ()
销毁Animator对象,释放资源。
destroy:function()