ありがとうlan私はスライダーFiddleでsvg変換を完了するのを手伝った。スナップSVGを使用してイメージ行列を初期化する方法はありますか?
いくつかの問題が発生した後、別の問題が発生しました。イメージが存在する場合、最初にスライダーに適用する方法はありますか? Fiddleの例では、スライダをドラッグしている間、イメージの動作が奇妙に見えます。
$(function() {
Snap.plugin(function(Snap, Element, Paper, global) {
Element.prototype.updateTransform = function() {
var newTransform = 't' + (this.data('xy').x) + ',' + (this.data('xy').y);
newTransform += 'r' + (this.data('r'))
newTransform += 's' + (this.data('s'))
this.transform(newTransform)
return this;
}
Element.prototype.init = function() {
return this.data('xy', {
x: 0,
y: 0
})
.data('r', 0)
.data('s', 1)
}
});
function dragStart(x, y) {
this.data('oxy', this.data('xy'));
}
function dragMove(dx, dy, x, y) {
this.data('xy', {
x: this.data('oxy').x + dx,
y: this.data('oxy').y + dy
})
.updateTransform();
}
obj = Snap(".cat");
obj.init();
obj.drag(dragMove, dragStart);
//Slider resize
$("#slider_resize").slider({
max: 4,
min: 1,
step: 0.1,
slide: function(event, ui) {
obj.data('s', ui.value)
.updateTransform();
}
});
//Slider rotate
$("#slider_rotate").slider({
max: 360,
min: 0,
step: 1,
value: 0,
slide: function(event, ui) {
obj.data('r', ui.value)
.updateTransform();
}
});
//Reset button
$('#reset').click(function() {
$("#slider_resize").slider('value', 0);
$("#slider_rotate").slider('value', 0);
obj.init().updateTransform();
});
});
ありがとうございます!あなたは私の命を救った:DDD。答えが問題をほぼ解決しました。私は私のプロジェクトにそれを適用しました。それはドラッグと移動を除いて良好に機能します。 https://youtu.be/zg2bFLzUXf4。デモビデオが示すように、異なる元のマトリックスは、異なる動きの状況を引き起こす。これは解決可能ですか? – david0116
申し訳ありませんが、私は間違っていました。元の画像の幅と高さが異なっていなければならないため、異なる動きの状況が発生します。 – david0116
イメージをドラッグし続けると、ブラウザが遅くなり、遅くなります。それは本当に奇妙です...私は翻訳し、これに対処するために行列なしで画像の幅と高さを変更する必要がありますか?これは私がhttps://jsfiddle.net/o497akje/7/を行ったことです。しかし、この行列に初期行列を与えると、これも多くの問題を抱えています。私は今何をすべきかわからない。どんな提案? – david0116