我正在尝试使用中间选择手柄在矩形中创建间隙。我有两个中间选择手柄,如果选择其中任何一个,它应该在中间创建一个间隙,就像将矩形分成两个相等的一半一样。(就像我们在玩中有窗帘:P)
在我的情况下,右选择手柄的行为与左选择手柄的行为相同。如果我将中间选择手柄移到右侧,则应该在中间创建一个间隙,但会创建一个重叠。
请在小提琴中选择绿色矩形,然后尝试在中间选择一个矩形,然后将其移到右侧。它不会执行正确的功能。相反,如果您选择中间手柄并将其向左移动,那就没问题了。
请让我知道我的逻辑哪里出了问题。
小提琴:http : //jsfiddle.net/q582L/7/
任何帮助都非常感谢。
switch (expectResize) {
case 0:
mySel.x = mx;
mySel.y = my;
mySel.w += oldx - mx;
mySel.h += oldy - my;
break;
case 1:
mySel.y = my;
mySel.h += oldy - my;
break;
case 2:
mySel.y = my;
mySel.w = mx - oldx;
mySel.h += oldy - my;
break;
case 3:
mySel.x = mx;
mySel.w += oldx - mx;
break;
case 4:
mySel.w = mx - oldx;
break;
case 5:
mySel.x = mx;
mySel.w += oldx - mx;
mySel.h = my - oldy;
break;
case 6:
mySel.h = my - oldy;
break;
case 7:
mySel.w = mx - oldx;
mySel.h = my - oldy;
break;
case 8:
//if(mx >= mySel.x + minGold)
// mx = mySel.x + minGold;
// Enforce limits on mx:
// Should not be closer than 5 pixels to this.x (left side of metric box)
// Should not be > this.x + width/2 (middle of metric box)
mySel.windowWidth = (mySel.x + mySel.w/2) - mx;
console.log(mySel.windowWidth);
break;
case 9:
// Enforce limits on mx:
// Should not be closer than 5 pixels to this.x (left side of metric box)
// Should not be > this.x + width/2 (middle of metric box)
mySel.windowWidth = (mySel.x + mySel.w) - mx;
console.log(mySel.windowWidth);
break;
由于鼠标向左移动以扩大窗口,因此您需要执行以下操作:
case 9: mySel.windowWidth = mx - (mySel.x + mySel.w / 2);
编辑
快速创建限制的方法如下:
case 8:
mySel.windowWidth = Math.max(Math.min((mySel.x + mySel.w/2) - mx, mySel.w - 5), 0);
break;
case 9:
mySel.windowWidth = Math.max(Math.min(mx - (mySel.x + mySel.w/2), mySel.w - 5), 0);
break;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句