三角形の位置を調整するには、パスを分割する必要があります。2番目の「M」がパスのどこにあるかを選択することで、これを目で確認できました。
var playB = Raphael('playB', 200, 200);
var circle = playB.path("M64,5.864C31.892,5.864,5.864,31.892,5.864,64c0,32.108,26.028,58.136,58.136,58.136c32.108,0,58.136-26.028,58.136-58.136C122.136,31.892,96.108,5.864,64,5.864z");
var triangle = playB.path("M26.736,102.728L97.264,62L26.736,21.272V102.728z");
次に、三角形を移動できます。
triangle.attr("transform", "T15,0");
プロパティとアニメーションをそのまま維持するには、両方を Raphael セットに追加します。
var playBP = playB.set();
playBP.push(circle, triangle);
playBP.attr({
'stroke-width': 5,
'stroke': "#000",
'fill': "#fff",
'opacity': 1
});
次に、1 つの小さな変更のみが必要です。マウスオーバー コマンドの「this」を「playBP」に変更します。これは冗長に思えるかもしれませんが、「これ」とはセットではなく、マウスオーバーされた単一の要素を指します。
var speed = 5;
playBP.mouseover(function(){
playBP.animate({
'stroke-width': 10,
'stroke': "#fff",
'fill': "#000",
'opacity': .9
}, 1000, 'elastic');
});
playBP.mouseout(function(){
playBP.stop().animate({
'stroke-width': 5,
'stroke': "#000",
'fill': "#fff",
'opacity': 1
}, speed*4, 'elastic');
});
jsFiddle が更新されました
単にパスを修正したい場合は、次のように Raphael.mapPath() 関数を使用して、三角形の調整された x/y を取得できます。
console.log(Raphael.mapPath(triangle.attr("path"), triangle.matrix));