`
nianshi
  • 浏览: 420543 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex 坐标系统跟踪鼠标位置

    博客分类:
  • Flex
阅读更多


我想跟踪用户鼠标位置,可以是相对于父容器或相对于容器中其他子组件。

解决办法

使用Stage 和MouseEvent 类的本地位置属性以及所有容器都继承自UIComponent 的mouseX和mouseY 属性。

讨论

MouseEvent 类有四个属性可用于确定鼠标位置。localX 和localY 属性提供与抛出mouse 事件相关的组件位置,而stageX 和stageY 提供与Stage 相关的位置。

下面的例子,如果鼠标移动到LinkButton 组件上,localX 和localY 属性将反应出鼠标在LinkButton 组件上的位置。如果鼠标没有在LinkButton 上,这两个属性就是指鼠标在VBox上的位置:

Code View:

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"

mouseMove="traceMousePosition(event)">

<mx:LinkButton label="MyButton"/>

</mx:VBox>

要检测某个组件上的鼠标位置(无论鼠标是否在其之上),使用DisplayObject 的mouseX 和mouseY 位置,它将返回相对于容器或组件的0,0坐标的位置。最后,Container 类定义了contentMouseX 和contentMouseY 位置,描述鼠标相对于整个容器内容的位置。下面的例子返回与两个被添加到HBox 的Panel 组件相关的鼠标位置,而不是与HBox 左上角相关:

Code View:

<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="500"

mouseMove="trace(this.contentMouseX+' : '+this.contentMouseY);

height="300"">

<mx:Panel width="400">

<mx:Label text="Center" horizontalCenter="200"/>

</mx:Panel>

<mx:Panel width="400">

<mx:Label text="Center" horizontalCenter="200"/>

</mx:Panel>

</mx:HBox>

因为HBox 两个子组件的和为812像素,当你滚动鼠标到HBox 右边时,你会发现x 值已经超出HBox 的设置值。容器定义了异恶contentPane 属性,它是容纳添加进来的所有子组件的私有的DisplayObject。如果子组件的高或宽超出容器自身设置的高或宽,那超出部分将被隐藏。而contentMouseX 和contentMouseY 属性就是测量鼠标在保护内容DisplayObject 上的位置。下面是完整代码:

Code View:

<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="300"

height="500" paddingTop="10" paddingLeft="10" verticalGap="15"

mouseMove="traceMousePosition(event)">

<mx:Script>

<![CDATA[

private function

traceMousePosition(event:MouseEvent):void

{

trace(" MouseEvent local position "+event.localX+"

"+event.localY);

trace(" MousePosition stage position

"+event.stageX+" "+event.stageY);

trace(" MouseEvent position from w/in component

"+this.mouseX+" "+this.mouseY);

trace(" Content Mouse Position

"+this.contentMouseX+" "+this.contentMouseY);

}

]]>

</mx:Script>

<mx:Image source="@Embed('../../assets/image.png')"/>

<mx:Image source="@Embed('../../assets/image.png')"/>

<mx:Image source="@Embed('../../assets/image.png')"/>

<mx:Image source="@Embed('../../assets/image.png')"/>

</mx:VBox>

当鼠标移到VBox 组件时函数将被调用,输出mouseX 和mouseY 值。
分享到:
评论

相关推荐

    flex 区域,鼠标画矩形选择组件

    在创建矩形选择组件时,我们通常会创建一个Sprite实例,并监听鼠标的mousedown、mousemove和mouseup事件来跟踪用户的绘制动作。 1. **mousedown事件**:当用户按下鼠标按钮时,我们记录下鼠标的起始位置(x1, y1)...

    flex 拖动导航菜单

    当用户按下鼠标并开始移动时,我们可以通过计算鼠标相对于菜单的位置来改变菜单的坐标。在`mouseup`事件中,我们可以添加逻辑来判断是否应该自动收回菜单,例如,如果菜单距离屏幕边缘一定距离,则将其隐藏。 此外...

    鼠标跟随效果AS3改写

    在`ball.as`中,我们可能会看到与鼠标位置相关的计算,以及更新球体位置和动画效果的代码。 描述中的“改写”暗示原有的代码可能有优化的空间或者存在一些问题,因此我们需要对原有的逻辑进行分析和重构。改写可能...

    paopaolong.rar_actionscript_flex_game_paopaolong

    这需要对坐标系统有深入理解,并使用Math类中的sin()和cos()函数来计算发射轨迹。同时,碰撞检测通常采用矩形碰撞或精确像素碰撞,ActionScript 3提供了相应的API支持。 接着是泡泡匹配和消除逻辑。当发射的泡泡与...

    多控件拖动.rar 多控件拖动.rar

    2. **坐标系统**:理解应用中的坐标系统至关重要,因为我们需要根据鼠标的当前位置来更新被拖动控件的位置。在Web开发中,这可能是基于HTML文档的坐标系统;在桌面应用中,可能基于窗口坐标系统。开发者需要将鼠标的...

    flex3的cookbook书籍完整版dpf(包含目录)

    以不同的坐标系统跟踪鼠标位置 3.4 节在容器中动态添加和移除子组件 3.5 节对容器使用基于约束的布局 3.6 节在容器内为子组件设置最大、最小尺寸 3.7 节为容器指定行和列的约束 3.8 节使用约束条件为文本创建排版...

    flex题目大全

    使用FlexBulider如何跟踪程序? - **答案**:使用Flex Builder的调试工具,可以在代码中设置断点,利用调试控制台查看变量状态等。 #### 25. 请问Flexbulider3可以创建几种不同的项目?Flex Builder4可以创建几种...

    Foundation Actionscript 3.0 Animation

    2.7.2鼠标位置 2.7.3键盘事件 2.7.4键盘代码 2.8小结 第3章动画中的三角学 3.1什么是三角学 3.2角 3.2.1弧度和度 3.2.2Flash坐标系统 3.2.3三角形的边 3.3三角函数 3.3.1正弦 3.3.2余弦 3 3.3.3正切 3.3.4反正弦和反...

    actionscript cook book 中文版

    1.3 编写代码的位置:讨论了在Flash或Flex环境中编写ActionScript代码的不同位置,如时间轴、文档类等。 1.4 跟踪信息:讲解如何使用trace()函数输出调试信息,以便于开发过程中的问题排查。 1.5 处理事件:介绍了...

Global site tag (gtag.js) - Google Analytics