私は最近、これと同様の問題に遭遇しても、あなたの問題に適用される解決策を考え出しました。私はステップLineChartを持っていて、ユーザーが定義されたデータポイントではなく、ライン上の任意の場所に移動したときにデータヒントを表示したかったのです。
あなたは、私はここでその問題のために書いたソリューションについて読むことができます:あなたは、あなたの問題に合うように少し私の解決策を修正する必要がありますFlex: Customizing data tip location and behavior in a LineChart
を:
ライン47であなたがMath.abs(last.y - mouseLoc.y) < 50
チェックを削除することができます。これにより、マウスの垂直方向に50ピクセル以内の線にデータヒントが制限されます。
デフォルトのセグメントを使用していると仮定しています。データポイント間に直接線を描く線グラフです。そのグラフタイプで動作するように、指定されたx座標で線の値を計算するコードを変更する必要があります。私はすでにマウスの左に最も近いデータポイントを33〜41行目で見つけてlast
に格納します。ただ、(右マウスの1つ最も近くなります)次のデータポイントを取得し、マウスでの値を取得するには、このようなものを使用します。
var slope:Number = (nextPoint.y - last.y)/(nextPoint.x - last.x);
var lineYAtMouse:Number = (slope * (last.x - mouseLoc.x)) + last.y;
var lineValue:Array = line.localToData(new Point(mouseLoc.x, lineYAtMouse));
続いて72を介してライン69を置き換えます。
hitPoint.x = mouseLoc.x;
hitPoint.y = lineYAtMouse;
hitPoint.xValue = lineValue[0];
hitPoint.yValue = lineValue[1];
これらの変更をテストしていないため、バグや2がある可能性がありますが、一般的な考え方はあります。私はこれがまだ誰かに役立つかもしれないことを願っています。この質問はかなり古くなってきています。 :)
+ 1-素晴らしい答え – Ryan
サイトがダウンしています。ここにアーカイブされたバージョンがあります。 http://web.archive.org/web/20120623212953/http://instantdelay。com/2010/08/flex-customizing-data-tip-location-and-a-linechart – approxiblue
@deshko私のホスティングを台無しにしました。今戻っているはずです。 – takteek