2

マウスダウンイベントで光る長方形があり、マウスアップイベントで光りが消えます。問題は、長方形をドラッグすると、キャンバス上で輝きが持続することです!

明確にするために私のコードは次のとおりです。

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);
    }
4

2 に答える 2

3

でオブジェクトのグローを削除し、startで再度適用できますup。この方法では、オブジェクトをドラッグしている間は影が表示されませんが、オブジェクトをドロップすると影が表示されます。

これがあなたの例のフィドルです。

于 2013-03-29T10:56:49.867 に答える
1

まず第一にthis、無名関数の中で使用thisしないでください。

第二に、 and は必要myRect.mousedownありません。なぜなら、 ( and )myRect.mouseup内のコールバックを処理するからです。myRect.dragstartup

だから私はあなたがそれが働いているのを見ることができるフィドルを作りました。

PS配置に関する別のバグがあるようです: 数回ドラッグすると、四角形がカーソルから離れて移動します。

于 2012-07-20T15:35:23.790 に答える