Вам нужно разделить путь, чтобы отрегулировать положение треугольника. Я смог сделать это на глаз, определив, где на пути была вторая буква «М»:
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");
Чтобы сохранить свойства и анимацию нетронутыми, добавьте их в набор Рафаэля:
var playBP = playB.set();
playBP.push(circle, triangle);
playBP.attr({
'stroke-width': 5,
'stroke': "#000",
'fill': "#fff",
'opacity': 1
});
Тогда вам нужно только одно небольшое изменение: измените «this» в командах наведения курсора на «playBP». Это может показаться излишним, но «this» относится к единственному элементу, на который был наведен курсор, а не к набору.
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