SuperMap.Animator

动画管理类。

通过浏览器帧(浏览器固定每秒会渲染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秒。

Summary
SuperMap.Animator 动画管理类。
Constants
EVENT_TYPES {Array(String)} 此类支持的事件类型。
Properties
events {SuperMap.Events}
Constructor
SuperMap.Animator 动画管理类构造函数。
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 开关切换,切换的是开始和暂停

Constants

EVENT_TYPES

{Array(String)} 此类支持的事件类型。

  • drawfeaturestart 每次绘制在当前时间节点内的feature时触发。

Properties

events

Constructor

SuperMap.Animator

动画管理类构造函数。

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

Parameters

callback {Function} 动画渲染回调函数,必设属性。具体的动画效果需要用户在此回调函数里面实现。
options {Object} 该类开放的可选属性。

Allowed options properties

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的正数。

Functions

start

start:function ()

开始播放动画

pause

pause:function ()

暂停播放动画

stop

stop:function ()

停止播放动画,停止后返回起始播放状态

toggle

toggle:function ()

开关切换,切换的是开始和暂停

redraw

redraw:function()

重新绘制一帧。 通过此方法可以实现刷新效果。

setSpeed

setSpeed:function( speed )

设置速度。

Parameters

speed {Number} 设置播放速度,必须为非负数,默认为1 (表示前后两次渲染的数据之间的间隔为1),设置越大时间跳跃越快。

Returns

{Boolean} true代表设置成功,false设置失败(speed小于0时失败)

getSpeed

getSpeed:function()

获取速度。

Returns

{Number} 返回当前的速度

setStartTime

setStartTime:function( startTime )

设置起始播放时间,设置完成后如果当前播放时间小于起始播放时间,则从起始播放时间开始播放

Parameters

startTime {Number} 需要设置的起始播放时间

Returns

{Boolean} true代表设置成功,false设置失败(startTime 大于结束时间时失败)

getStartTime

getStartTime:function()

获取起始播放时间

Returns

{Number} 返回当前的起始播放时间

setEndTime

setEndTime:function( endTime )

设置结束播放时间,设置完成后如果当前播放时间大于结束播放,则从起始播放时间开始播放

Parameters

endTime {Number} 需要设置的结束播放时间

Returns

{Boolean} true代表设置成功,false设置失败(endTime 小于开始时间时失败)

getEndTime

getEndTime:function()

获取结束播放时间

Returns

{Number} 返回当前的结束播放时间

setCurrentTime

setCurrentTime:function( currentTime )

设置当前播放时间

Parameters

currentTime {Number} 需要设置的当前播放时间

Returns

{Boolean} true代表设置成功,false设置失败(currentTime 不在时间段内时失败)

getCurrentTime

getCurrentTime:function()

获取当前播放时间

Returns

{Number} 返回当前播放时间

getOldTime

getOldTime:function()

获取上一帧播放时间

Returns

{Number} 返回上一帧播放时间

setRepeat

setRepeat:function( repeat )

设置是否重复循环播放

Parameters

repeat {Boolean} 是否重复循环播放

getRepeat

getRepeat:function()

获取是否重复循环播放,默认是true。

Returns

{Boolean} 返回是否重复循环播放

setReverse

setReverse:function( reverse )

设置是否反向播放

Parameters

reverse {Boolean} 是否反向播放

getFrameRate

getFrameRate:function()

获取帧率。 表示每秒播放的次数,默认为60,即每秒播放60次。

Returns

{Number} 返回帧率

setFrameRate

setFrameRate:function( frameRate )

设置帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。

帧率设置的越高,每秒渲染的次数越多,动画连贯性越好,性能越低; 帧率设置的越低,每秒渲染的次数越少,动画连贯性越差,性能越好。

Parameters

frameRate {Number} 由于浏览器每秒渲染60帧是固定的,所以我们只能设置每秒播放的次为小于等于60, 大于等于0的正数。 比如:设置 animator.setFrameRate(30),表示每秒播放动画30次,也就是浏览每渲染两帧,动画播放一次; 如果希望动画播放很慢,可以设置为如 animator.setFrameRate(1/7),表示每秒播放1/7次,也就是每7秒播放一次。

Returns

{Boolean} true代表设置成功,false设置失败(frameRate不在0到60之间时失败)

getReverse

getReverse:function()

获取是否反向播放,默认是false。

Returns

{Boolean} 返回是否反向播放

getRunning

getRunning:function ()

获取动画运行状态

Returns

{Boolean} true代表正在运行,false发表没有运行

destroy

destroy:function()

销毁Animator对象,释放资源。

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 )
设置是否重复循环播放
getRepeat:function()
获取是否重复循环播放,默认是true。
setReverse:function( reverse )
设置是否反向播放
getFrameRate:function()
获取帧率。 表示每秒播放的次数,默认为60,即每秒播放60次。
setFrameRate:function( frameRate )
设置帧率,表示每秒播放的动画的次数,默认为60,即每秒播放60次。
getReverse:function()
获取是否反向播放,默认是false。
getRunning:function ()
获取动画运行状态
destroy:function()
销毁Animator对象,释放资源。
Close