2011-05-03 47 views
0

在我的flex应用程序中,我需要限制鼠标移动到某个区域。换句话说,我想在应用程序中为鼠标创建一个“No Entry Zone”。隐藏当鼠标进入该区域时光标不是我的解决方案。在flex应用程序中限制鼠标移动区域

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600"> 

    <mx:Script> 
     <![CDATA[ 
      protected function canvas2_mouseMoveHandler(event:MouseEvent):void 
      { 
       trace('mouse moved inside');//this trace should not be executed. 
      } 

     ]]> 
    </mx:Script> 

    <mx:Canvas x="250" y="180" backgroundColor="white" height="300" width="400" mouseMove="canvas2_mouseMoveHandler(event)"> 
     <mx:Text text="Mouse Entry not allowed"/> 
    </mx:Canvas> 
</mx:Application> 

回答

0

我们可以控制/设置鼠标的位置从的Flex/ActionScript中

,但我们可以做帆布鼠标的感测能够将性能

即当我们在移动鼠标它不会触发事件。性能

mouseChildren="false" 
mouseEnabled="false" 

希望帮助

+0

一些样品我想给一个向用户提供鼠标无法进入该区域的视觉反馈。也就是说,鼠标只能移动到该区域的边界,并且如果用户试图将鼠标带入内部,则鼠标移动应该受到限制。我们无法控制它吗? – user700284 2011-05-03 12:03:46

+0

从AS3/Flex我的答案是否定的,但你可以使用包装来控制像ASP.net的鼠标位置,在这种情况下,你需要调用ASP.net/JS方法从Flex时,鼠标在禁区内移动,但从来没有尝试过, – Imran 2011-05-03 12:13:27

+0

通过你的拖放评论,我发现你不想限制鼠标,但一个对象看Flash例子http://www.flashandmath.com/basic/dragdroptour/dd_tour1.html是你需要什么? – Imran 2011-05-03 12:50:24

1

你不能编程位置(所以没有固定)鼠标光标在Flex中(由作者:Alex Harui in this answer指出)。

虽然,你可以试试to this approach
通过跟踪鼠标的x | Y你可以

  1. 绘制光标在其上一次启用 位置输入您 限制画布(+隐藏)时,和
  2. 删除绘制光标 mouseOut事件(+显示光标)。

限制在拖/放你Canvas刚才设置的dragEnter属性(事件处理程序)就可以了:

dragEnter="event.stopImmediatePropagation();" 

你可以看到enabling and disabling drag/drop operations here

+0

隐藏鼠标指针是行不通的,因为它是我想限制的游标的移动。基本上,我想限制拖放到特定区域(http ://stackoverflow.com/q/5713140/700284)。所以,我想如果我能够以某种方式限制鼠标光标的移动并将光标停在它所在的位置,我会实现它。所以我不可能按照我想要的方式做到这一点吗? 顺便说一句:你发布的第二个链接似乎指向了错误的网址 – user700284 2011-05-03 12:17:50

+0

为了限制在flex组件上拖放,你需要指定正确的处理程序。请参阅我的更新。 (抱歉关于错误的链接,我也更新了它)。 – rekaszeru 2011-05-03 12:32:00