拖动对象时发光问题

时间:2012-07-20 10:45:32

标签: raphael

我有一个矩形,在mousedown event&鼠标事件时发光消失。问题是当我拖动矩形时,画布上的光晕仍然存在!

为清晰起见,这是我的代码:

window.onload = function(){
        var paper = new Raphael("holder",500,500);

        var myRect = paper.rect(200,200,200,100,10);
        myRect.attr({
            fill: "#999",
            stroke: "#555",
            'stroke-width': 5
        });

        myRect.mousedown(function(){
                this.g = myRect.glow();
            }
        );
        myRect.mouseup(function(){
                this.g.remove();
        });
        var start = function(){
            this.ox = this.attr('x');
            this.oy = this.attr('y');
        },
        move = function(dx,dy){
            var att = {x:this.ox+dx,y:this.ox+dy};
            this.attr(att);
        },
        up = function(){
            //
        };
        myRect.drag(move,start,up);
    }

2 个答案:

答案 0 :(得分:3)

您可以移除start上对象的光晕,然后在up上再次应用它。通过这种方式,当您拖动对象时,阴影将不可见,但是当您放下对象时阴影将会出现。

以下是您的示例 fiddle

答案 1 :(得分:1)

首先,您不应在匿名函数中使用this,因为this的范围仅在那里可用。

其次,您不需要myRect.mousedownmyRect.mouseup,因为您处理myRect.dragstartup)中的回调

所以我让你成为fiddle,你可以看到它在工作。

P.S。定位似乎还有另一个错误:当您拖动几次时,矩形会从光标移开。