stopAnimate

This commit is contained in:
oc 2018-12-26 13:15:18 +08:00
parent 46dc678848
commit 1e62599324
4 changed files with 35 additions and 5 deletions

View File

@ -476,9 +476,12 @@ core.maps.removeBlockByIds(floorId, ids)
core.maps.drawAnimate(name, x, y, callback)
播放一段动画name为动画名需在全塔属性注册x和y为坐标0-12之间callback可选为播放完毕的回调函数。
播放过程是异步的如需等待播放完毕请使用insertAction插入一条type:waitAsync事件。
此函数将随机返回一个数字id。将 "stopAnimate_"+id 这个flag置为true则可以立刻停止该动画的播放
var id = core.maps.drawAnimate("zone", 3, 3);
core.setFlag("stopAnimate_"+id, true); // 立刻停止动画的播放
此函数将随机返回一个数字id为此异步动画的唯一标识符。
core.maps.stopAnimate(id, doCallback)
立刻停止一个异步动画。
id为该动画的唯一标识符由drawAnimate函数返回doCallback可选若为true则会执行该动画所绑定的回调函数。
========== core.ui.XXX 和对话框绘制相关的函数 ==========

View File

@ -122,10 +122,9 @@ control.prototype.setRequestAnimationFrame = function () {
var animateObjs = [];
for (var i=0;i<core.status.animateObjs.length;i++) {
var obj = core.status.animateObjs[i];
if (obj.index == obj.animate.frames.length || core.hasFlag("stopAnimate_"+obj.id)) {
if (obj.index == obj.animate.frames.length) {
// 绘制完毕
delete core.animateFrame.asyncId[obj.id];
core.removeFlag("stopAnimate_"+obj.id);
// 异步执行回调...
(function(callback) {
setTimeout(function() {

View File

@ -900,6 +900,11 @@ core.prototype.drawAnimate = function (name, x, y, callback) {
return core.maps.drawAnimate(name, x, y, callback);
}
////// 停止动画 //////
core.prototype.stopAnimate = function (id, doCallback) {
return core.maps.stopAnimate(id, doCallback);
}
////// 更新领域、夹击、阻击的伤害地图 //////
core.prototype.updateCheckBlock = function() {
core.control.updateCheckBlock();

View File

@ -1387,6 +1387,29 @@ maps.prototype.drawAnimate = function (name, x, y, callback) {
return animateId;
}
////// 停止动画 //////
maps.prototype.stopAnimate = function (id, doCallback) {
for (var i=0;i<core.status.animateObjs.length;i++) {
var obj = core.status.animateObjs[i];
if (obj.id == id) {
delete core.animateFrame.asyncId[obj.id];
if (doCallback) {
(function(callback) {
setTimeout(function() {
if (core.isset(callback))
callback();
});
})(obj.callback);
}
}
core.status.animateObjs.splice(i, 1);
if (core.status.animateObjs.length == 0) {
core.clearMap('animate');
}
break;
}
}
maps.prototype.setFloorImage = function (type, loc, floorId, callback) {
if (type!='show') type='hide';
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')