Vis.js を使用してネットワーク ダイアグラムを描画しています。特定のノードの AJAX 更新を受信すると、キャンバスがそのノードを中央に移動し (Vis.js は既に実行できます)、その上にある種のブルズアイ アニメーションを表示する通知機能が必要です。ノードをクリックするまでユーザーの注意を引きます。私が探しているアニメーション効果に最も近い例は、http://codepen.io/MateiGCopot/pen/ogEKRKにあります。
var w = c.width = 400,
h = c.height = 400,
ctx = c.getContext('2d'),
frame = 0;
function anim(){
window.requestAnimationFrame(anim);
++frame;
for(var i = 0; i < w; ++i){
ctx.strokeStyle = i%20 === 0 ? 'hsl(hue, 80%, 50%)'.replace('hue',
(360 / (w/3) * i - frame) % 360
) : 'rgba(0, 0, 0, .08)';
ctx.beginPath();
ctx.arc(w/2, h/2, (i + frame)%w/2, 0, Math.PI*2);
ctx.stroke();
ctx.closePath();
}
}
anim();
これは、このタイプの効果を達成するための最良の方法ですか? 私のマシンで実行すると、CPU 使用率が急上昇するため、それほど効率的ではないようです。
また、このようなものを Vis.js と統合して、画像ノードを描画し、ノードをクリックすると停止するようにするにはどうすればよいですか? この特定の例では、円を外側に描画しますが、内側に描画したいのですが、方向を変更する方法がわかりませんでした。
JavaScript は私の強力なスイートではないので、説明が詳細であればあるほどよいでしょう。また、私は特に Vis.js に縛られているわけではないので、(同等の Vis.js 機能と共に) この機能を既に備えている別のライブラリがあれば、切り替えても問題ありません。