我有一个自定义组件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>
答案 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()