自动检测位置变化

时间:2010-06-23 13:00:52

标签: flex actionscript-3 adobe mxml

我有一个自定义组件Comp,由于与其他组件等的交互,它的位置发生了变化。我通过不断检查固定间隔的位置来检查其位置的变化。我正在寻找一个更好的解决方案(可能是一个基于事件的解决方案)来监控它的位置,所以我不必经常自己检查。

有两种可能性

  • 组件本身可以自知其在舞台上的位置,并在知道其位置发生变化时向主应用程序(通过事件)报告。那可能吗?组件是否自我意识到其位置或位置的变化?当发生这种情况时,我可以捎带什么事?

  • 另一个选项是主应用程序可以监视组件的位置,并在该位置发生变化时采取措施。那可能吗?主应用程序是否可以检测其组件位置的变化,以及此处可能使用的事件是什么?

如果没有,我怎么能检测到该组件何时改变位置而不必自己经常检查它。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               xmlns:local="*">

    <local:Comp id="comp" x="100" y="100" />

</s:Application>

3 个答案:

答案 0 :(得分:4)

您是否曾尝试收听move事件?

答案 1 :(得分:4)

我的第二个早期建议是听取移动事件

http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#event:move

如果您想更具体,x和y值将分派更改的事件。因此,如果要对x或y运动执行不同的操作,也可以侦听xChanged或yChanged。

答案 2 :(得分:1)

也许你可以玩数据绑定。 BindingUtils接口允许您在观察属性发生变化时设置函数: http://livedocs.adobe.com/flex/3/langref/mx/binding/utils/BindingUtils.html#bindSetter()