Повторные анимации с электронными картами - PullRequest
0 голосов
/ 15 декабря 2018

Я использую электронные диаграммы для построения графиков рассеяния.У меня есть несколько рядов данных, и я хочу, чтобы каждый из них последовательно появлялся после анимации по моему выбору.Вместо этого происходит то, что первые серии анимируются по моему выбору, но последующие возвращаются к анимации по умолчанию, хотя (насколько я вижу) я все еще определяю анимацию для них.

самый короткий законченный пример, который я могу сделать ...

var chartOptions = function(seriesData) {
  let option = {
    xAxis: {
      min: 0,
      max: 11
    },
    yAxis: {
      min: 0,
      max: 11
    },
    series: [{
      name: "Series 1",
      type: 'scatter',
      data: seriesData,
      color: "red",
      animationDelay: function(idx) {
        return idx * 250;
      },
      animationEasingUpdate: "linear"
    }, ]
  };
  return option;
};

var nextSeries = function(seriesData) {
  let series = {
    series: [{
      name: "Next series",
      type: 'scatter',
      data: seriesData,
      color: "blue",
      animationDelay: function(idx) {
        return idx * 250;
      },
      animationEasingUpdate: "linear"
    }, ]
  };
  return series;
};

var series1 = [
  [1, 1],
  [2, 2],
  [3, 3],
  [4, 4],
  [5, 5]
];
var series2 = [
  [10, 10],
  [9, 9],
  [8, 8],
  [7, 7],
  [6, 6]
];
var series3 = [
  [10, 10],
  [1, 1],
  [8, 8],
  [2, 2],
  [6, 6]
];
var seriesAll = [series1, series2, series3]

var options = chartOptions(series1);
var chart1 = echarts.init(document.getElementById("ChartView"));
chart1.setOption(options);
var i = 0;
var timer = setInterval(function() {
  i++;
  if (i >= seriesAll.length) {
    clearInterval(timer)
  } else {
    var nextOptions = nextSeries(seriesAll[i])
    chart1.setOption(nextOptions);
  };
}, 2000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.1.0/echarts-en.js"></script>


<div id="ChartView" style="height:300px;max-width:300px;">
</div>

1 Ответ

0 голосов
/ 18 декабря 2018

Ну, вы можете сначала очистить все диаграммы рассеяния, а затем построить следующую серию, как показано ниже:

chart1.setOption(nextSeries([]));
chart1.setOption(nextOptions);

var chartOptions = function(seriesData) {
    let option = {
        xAxis: {
            min: 0,
            max: 11
        },
        yAxis: {
            min: 0,
            max: 11
        },
        series: [{
            name: "Series 1",
            type: 'scatter',
            data: seriesData,
            color: "red",
            animationDelay: function(idx) {
                return idx * 250;
            },
            animationEasingUpdate: "linear"
        }, ]
    };
    return option;
};

var nextSeries = function(seriesData) {
    let series = {
        series: [{
            name: "Next series",
            type: 'scatter',
            data: seriesData,
            color: "blue",
            animationDelay: function(idx) {
                return idx * 250;
            },
            animationEasingUpdate: "linear"
        }, ]
    };
    return series;
};

var series1 = [
    [1, 1],
    [2, 2],
    [3, 3],
    [4, 4],
    [5, 5]
];
var series2 = [
    [10, 10],
    [9, 9],
    [8, 8],
    [7, 7],
    [6, 6]
];
var series3 = [
    [10, 10],
    [1, 1],
    [8, 8],
    [2, 2],
    [6, 6]
];
var seriesAll = [series1, series2, series3]

var options = chartOptions(series1);
var chart1 = echarts.init(document.getElementById("ChartView"));
chart1.setOption(options);
var i = 0;
var timer = setInterval(function() {
    i++;
    if (i >= seriesAll.length) {
        clearInterval(timer)
    } else {
        var nextOptions = nextSeries(seriesAll[i])
        chart1.setOption(nextSeries([]));
        chart1.setOption(nextOptions);
    };
}, 2000);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" > </script> 
<script src = "https://cdnjs.cloudflare.com/ajax/libs/echarts/4.1.0/echarts-en.js"> </script>
<div id = "ChartView" style = "height:300px;max-width:300px;" >
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...