Трябва да разделите пътя, за да коригирате позицията на триъгълника. Успях да направя това на око, като избрах къде е второто "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
});
Тогава се нуждаете само от една малка промяна: Променете "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));
person
Chris Wilson
schedule
09.01.2013