【问题标题】:The empty space of a canvas does not fire events in Flex画布的空白区域不会触发 Flex 中的事件
【发布时间】:2011-12-06 18:54:59
【问题描述】:

画布的空白区域不会触发事件。

我的问题是我的应用程序中有一个画布,它显示了一个由不同图形组成的图表,但画布空白处不会触发我需要的事件,如翻转。

你能告诉我如何让我的画布触发事件,即使在空白处?

我已经设置了背景颜色、mouseEnabled、颜色、边框、alpha、opaqueBackground等,没有任何效果。

我使用的是 Flex 4,我只需要使用 mx:Canvas。

这里是事件监听器注册:

canDiagram.addEventListener(MouseEvent.ROLL_OVER, function(event:MouseEvent):void{if(actualCursor != null){CursorManager.setCursor(actualCursor,2,-10,-10);}},true);
canDiagram.addEventListener(MouseEvent.ROLL_OUT, function(event:MouseEvent):void{CursorManager.removeAllCursors();},true);

【问题讨论】:

    标签: actionscript-3 apache-flex events flex4 event-handling


    【解决方案1】:

    您需要确保为 backgroundColor 设置颜色,同时将 backgroundAlpha 设置为 0。这样可以确保它仍然是透明的,并且您的鼠标事件将会触发。这是我用来让它工作的测试画布

    <mx:Canvas x="104" y="107" width="215" height="134" backgroundAlpha="0" 
               backgroundColor="#FFFFFF" rollOut="canvas1_rollOutHandler(event)"
               rollOver="canvas1_rollOverHandler(event)">
    </mx:Canvas>
    

    【讨论】:

      【解决方案2】:

      一般情况下,这类问题可以通过设置一个 backgroundColor 并将 backgroundAlpha 设置为 0 来解决。

      你说你已经尝试过了;你能发布一个你的 Canvas 定义的例子吗?

      我还会在您的事件处理程序中放置一个跟踪语句或类似的东西,以确保它们实际上没有被调用。我遇到过这样的情况,我无法弄清楚为什么某个特定事件没有触发,只是发现确实如此,但我的处理程序并没有按照我的预期进行。

      【讨论】:

        猜你喜欢
        • 2014-03-11
        • 2015-07-08
        • 2022-01-10
        • 2015-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        相关资源
        最近更新 更多