0
谢谢lan谁帮我完成svg转换滑块Fiddle。如何使用snap 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