amcharts 的 stockChart 鼠标移动侦听器

amcharts' stockChart mouse move listener

我正在尝试向 amCharts 的 stockChart 添加一个侦听器,但找不到位置。

根据the docs of chartCursor you can set changed event on chartCursor however chartCursor does not exist on stockChart, only regular charts according to the docs of the StockChart。 据我所知,唯一半相关的设置是 chartCursorSettings 但它不允许设置任何侦听器。

如何在 amCharts 的 amStockChart 上捕获鼠标 move/changed 事件?

changed事件可以在panel层被捕获:

var chart = AmCharts.makeChart("chartdiv", {
  // ...
  "panels": [{
    // ...
    "listeners": [{
      "event": "changed",
      "method": function(e) {
        console.log('changed event fired')
      }
    }],
  }],
  // ...
});

下面的演示:

var chart = AmCharts.makeChart("chartdiv", {
  "type": "stock",
  "theme": "light",

  "categoryAxesSettings": {
    "minPeriod": "mm"
  },

  "dataSets": [{
    "fieldMappings": [{
      "fromField": "value",
      "toField": "value"
    }],

    "dataProvider": generateChartData(),
    "categoryField": "date"
  }],

  "panels": [{
    "stockGraphs": [{
      "valueField": "value",
      "type": "smoothedLine"
    }],
    "listeners": [{
      "event": "changed",
      "method": function(e) {
        console.log('changed event fired')
      }
    }],
  }],

  "chartCursorSettings": {
    "valueBalloonsEnabled": true
  }
});


function generateChartData() {
  var chartData = [];
  var firstDate = new Date( 2012, 0, 1 );
  firstDate.setDate( firstDate.getDate() - 1000 );
  firstDate.setHours( 0, 0, 0, 0 );

  for ( var i = 0; i < 1000; i++ ) {
    var newDate = new Date( firstDate );
    newDate.setHours( 0, i, 0, 0 );

    var a = Math.round( Math.random() * ( 40 + i ) ) + 100 + i;

    chartData.push( {
      date: newDate,
      value: a
    } );
  }
  return chartData;
}
 #chartdiv {
 width: 100%;
 height: 300px;
}
<script src="//www.amcharts.com/lib/3/amcharts.js"></script>
<script src="//www.amcharts.com/lib/3/serial.js"></script>
<script src="//www.amcharts.com/lib/3/themes/light.js"></script>
<script src="//www.amcharts.com/lib/3/amstock.js"></script>
<div id="chartdiv"></div>