Raphael JSライブラリ(バージョン2.0.0)に関する質問と、パスをドラッグする機能があります。ドラッグ機能が自分のパスで動作するようになりますが、パスのスケールや回転を変更すると、ドラッグ機能はすべてのコントロールを失い、私の要素はどこにでも飛びます。回転またはスケールが変更されたときにRaphaeljsのパスをドラッグします。
draggable-libraryを使用しようとしましたが、Raphael 2.0.0をサポートしていないため、使用できません。私のコードでCatmull-Rom curvetoを使用しています。 Raphael 2.0.0の新機能です。
ご協力いただければ幸いです!ここに私のコードは次のとおりです。
paper = Raphael(document.getElementById("holder"), 768, 1024);
var startPath = function() {
this.ox = this.type == "rect" ? this.attr("x") : this.attr("cx");
this.oy = this.type == "rect" ? this.attr("y") : this.attr("cy");
},
movePath = function (dx, dy) {
var trans_x = (dx)-this.ox;
var trans_y = (dy)-this.oy;
this.translate(trans_x,trans_y);
this.ox = dx;
this.oy = dy;
},
upPath = function() {
// nothing special
};
drawing = "M152.854,210.137c-9.438-64.471,22.989-102.26,124.838-96.551s244.094,41.985,152.664,151.667C338.926,374.934,162.761,277.813,152.854,210.137z";
shape = paper.path(drawing);;
shape.translate(0,0);
shape.scale(1,1);
shape.attr({
'stroke': '#000000',
'fill': 'blue',
'stroke-width': '5',
});
shape.drag(movePath, startPath, upPath);
ので、これが動作しているが、できるだけ早く私は、例えば、次のコードを追加すると、それが動作しない:
shape.scale(2,2);
shape.rotate(90);
この入力をお寄せいただきありがとうございます。私はちょうど私が望むものを得るためにあなたのコードの少し部分を変更しなければなりませんでした: this.transform( "... T" + [trans_x、trans_y]); – HenrikSolberg