需求:需要实现一个小球在轨迹上来回运动的效果(只要不点击停止)
//me.conf.history.time为默认时间,me.conf.history.move_key为是否开始运动,me.isStopMove1为是否停止运动,在init()中已定义
_history_start: function (index, isStopMove, map, data) {
setTimeout(function () {
index++;
if(!me.isStopMove1) {
me.conf.history.move_key = false;
me.map.removeLayer(me.deleteLayer)
return;
}
else if (index == me.lines_arr.length) {
// 运动完毕
me.conf.history.move_key = false;
index = 1
me._history_start(index, false, '', data);
}
else {
var old_p = data.getGeometry().flatCoordinates;
var new_p = me.lines_arr[index];
data.setGeometry(new Point(new_p));
//小球的旋转方式及方向(已注释)
// data
// .getStyle()
// .getImage()
// .setRotation(me._map_p_rotation(new_p, old_p));
me._history_start(index, false, map, data);
}
}, me.conf.history.time);
},
//调用
setTimeout(() => {
// 运动标识
if(isStop == 'show') {
me.conf.history.move_key = true;
me.isStopMove1 = true
//如果有多个小球,则分别运动
me.all_obj.history.p_data.forEach(item => {
me._history_start(item.value, false,map, item.data);
})
}
},500)
卡壳地方:不太清楚setTimeout()和setInterval()
setTimeout()只在隔多长时间执行一次,不需要清除。
setInterval()是在隔多长时间执行,如果不清除,会一直执行。(可以设置标志变量来全局清除定时器,待验证)