ユーザーがマウス カーソルをポリゴンの輪郭の上または近くに置くと、アンカーが表示され、マウスの位置をたどる必要がありますが、ポリゴンの輪郭にスナップします。
問題:mousemove
ハンドラー関数がこのアンカーの位置を更新すると、アンカーがちらつくように見えます。ちらつきや更新の遅さの原因は何ですか? ここに示したKineticJS の例は、かなり迅速に更新されているようです。
また、アンカーはポリゴンのアウトライン/ストロークにスナップしていません。この効果はどのように達成できますか?
あなたのmousemove
関数はアンカーを動かしています。アンカーが移動すると、マウスが上になくなるpolyHitArea
ため、mouseleave
イベントが発生してアンカーが非表示になります。
編集
これが起こらないようにするために私が考えることができる最良の方法は、setVisible(false)
コードを呼び出しに配置し、呼び出しにイベントsetTimeout
を持たせることです。mouseenter
mouseoverAnchor
clearTimeout
var polyHitArea._timeout = 0;
polyHitArea.on('mouseover', function(e) {
clearTiemout(polyHitArea._timeout);
mouseoverAnchor.setVisible(true);
stage.draw();
});
polyHitArea.on('mouseleave', function(e) {
clearTimeout(polyHitArea._timeout);
polyHitArea._timeout = setTimeout(function(){
mouseoverAnchor.setVisible(false);
}, 25); // 25 ms enough time?
stage.draw();
});
mouseoverAnchor.on('mouseenter', function(e) {
clearTimeout(polyHitArea._timeout);
});