关于鼠标moveup监听的问题请教下

我做了一个函数,是控制物体的。这个函数里面,mousedown、mousemove、mouseup三个监听事件来完成一个一连串的动作(点击拖动释放)。为什么在二次调用这个函数的时候,会出现mouseup监听触发了两次?

这是第一次正常调用

这是第二次调用,就mouseup函数触发了两次了

可能是重复注册 贴下详细的代码

this.canvas.on(‘mouseup’,function(event){
console.log(‘gan’,oldgan.x,oldgan.y);
console.log(“鼠始up”);
//mflag=true;
flag=false;
console.log(‘k’,this.k);
var kp=Math.pow(this.k,2);
var bp=0;
var a=kp+1;
var b=0;
var c=-5184;
var det=Math.sqrt((Math.pow(b,2))-4ac);
// console.log(‘det’,det);

            var x1=((-b)+det)/(2*a);
            var x2=((-b)-det)/(2*a);
            if(oldgan.x<=0)
            {
                if(x1<=x2)
                {
                    var tx=x1;
                }
                else
                {
                    tx=x2;
                }
                
            }
            else
            {
                if(x1<=x2)
                {
                    tx=x2;
                }
                else
                {
                    tx=x1;
                }
            }
            var ty=tx*this.k;
            var point=cc.p(tx,ty);
            console.log('point',point);
             var newgan1=cc.instantiate(this.gan);
             //杆的移动长度
             this.dist=cc.pDistance(cc.p(oldgan.x,oldgan.y),cc.p(tx,ty));
             console.log('dist',this.dist);
            // 将新增的节点添加到 Canvas 节点下面
            this.node.addChild(newgan1);
            // 为星星设置一个随机位置
             newgan1.setPosition(cc.p(tx,ty));
             newgan1.rotation=oldgan.rotation;
            oldgan.destroy();
            oldgan=newgan1;
            console.log('gan',oldgan.x,oldgan.y);
            this.ox=this.node.x;
            this.oy=this.node.y;
    },this);

看起来没问题,
新生成的节点new gan1 有监听事件?
点击屏幕第三次是响应三次up?

第一次调用,释放鼠标是正常的,只响应了一次up,但第二次调用,同样的动作,却响应了两次up