在对象外部开始单击时防止 MouseUp

Posted

技术标签:

【中文标题】在对象外部开始单击时防止 MouseUp【英文标题】:Prevent MouseUp when click starts outside of object 【发布时间】:2012-08-01 03:52:48 【问题描述】:

我有一个 Sprite 对象,它是一个扑克筹码。当用户点击它时,出价会增加。我正在提高MouseUp 事件的出价。但是,如果用户在对象/芯片之外开始单击,然后将鼠标拖到芯片上并执行MouseUp,它会触发映射到MouseUp 的函数。如果单击在对象外部开始,我如何防止它触发。

this.addEventListener(MouseEvent.MOUSE_DOWN, pressChipDown)
this.addEventListener(MouseEvent.MOUSE_UP, pressChipUp)
this.addEventListener(MouseEvent.MOUSE_OUT, pressChipOut)



private function pressChipDown(e:MouseEvent):void
    
        super.x = startX + 5;
        super.y = startY + 5;
    

    private function pressChipUp(e:MouseEvent):void
    
        increaseBid();
        super.x = startX;
        super.y = startY;
    

    private function pressChipOut(e:MouseEvent):void
    
        if(e.buttonDown) //if mouse button is down, move chip back but dont increase bid
        
            pressChipUp(MouseEvent.MOUSE_OUT as MouseEvent)
        
    

谢谢

【问题讨论】:

【参考方案1】:

翻滚时,开始听mouse down和mouse up,如果先上后下,那就是“假”

this.addeventlistener(MouseEvent.ROLL_OVER, onOver)

...

【讨论】:

如何从那里开始收听 MouseDown 和 MouseUp? 就像在其他任何地方一样。 addEventListener(MouseEvent.MOUSE_UP, onReleased) 该类已经在监听 MouseDown 和 MouseUp。重新开始听对我没有任何好处。 是的,这就是我的意思,你在结束时开始听,而不是最初。 你也可以在 mouseOver 上添加一个 bool 标志并在 mouseOut 上重置它,并且只有在 bool 标志为 true 时才接受点击

以上是关于在对象外部开始单击时防止 MouseUp的主要内容,如果未能解决你的问题,请参考以下文章

单击外部弹出框时如何防止 UIPopoverPresentationController 被关闭?

在mouseup事件处理程序中取消单击事件

防止 MatDialog 在外部单击且未决更改时关闭

如何防止 UILabel 在 Swift 中阻止对父 UIButton 的触摸?

滑动页面时防止touch事件的误触问题

防止 Snackbar 在操作单击时关闭