奇怪地按下鼠标时的选择手柄

XX调试器

我正在尝试使用中间选择手柄在矩形中创建间隙。我有两个中间选择手柄,如果选择其中任何一个,它应该在中间创建一个间隙,就像将矩形分成两个相等的一半一样。(就像我们在玩中有窗帘: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;

jsFiddle上的现场演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章