У меня есть бумага RaphaelJS, в которой есть набор, содержащий изображение и другие элементы. Изображение больше, чем бумага, и пользователь может перетащить его. Однако я хочу, чтобы перетаскивание остановилось, чтобы граница изображения никогда не была видна, что означает, что пользователь не будет иметь белые поля. Я пробовал несколько способов, но я все время получаю странные результаты, и я наклоняю голову вокруг него. Я могу получить верхний левый угол изображения и остальные углы изображения с расчетом. Спасибо за ваше время.RaphaelJS: Остановить перетаскивание, когда изображение из кадра
UPDATE: я добавилJSFiddle example
В примере я добавил условие, которое, как предполагается, чтобы верхний левый корнет вне холста, но, как вы можете видеть, что есть много глюков и ошибки с этим.
here is an image illustrating the desired result
Код:
Raphael.st.draggable = function(index) {
var me = this,
lx = 0,
ly = 0,
ox = 0,
oy = 0,
moveFnc = function(dx, dy) {
x = set.getBBox().x;
y = set.getBBox().y;
console.log(x+":"+y);
lx = dx + ox;
ly = dy + oy;
if(x+dx < 0 && y+dy < 0)//REMOVE THIS CONDITION FOR FREE DRAG
me.transform(',,320,240,'+'t' + lx + ',' + ly);
},
startFnc = function() {},
endFnc = function() {
ox = lx;
oy = ly;
};
this.drag(moveFnc, startFnc, endFnc);
};
width = 640;
height = 480;
paper = Raphael(cur_id, width, height),
image = paper.image('http://edwardtufte.com.s3.amazonaws.com/Thinking%20Eye/ParisMap.gif', 0, 0,950,805)
set = paper.set();
set.push(image);
paper.canvas.style.backgroundColor = "#FF0000"
set.draggable();
Я попытался бы получить пример на jsfiddle – Ian
Я добавил один :) – Ethan
@Ethan, как может быть размер изображения больше бумаги? и у скрипки есть некоторая ошибка, пожалуйста, проверьте. – rajuGT