0

问题

如何检测组件的全局 xy 坐标的变化(从组件内部)。全局坐标是指相对于舞台而不是容器的坐标。

检测何时MyComponent.x更改很容易,但何时更改则不那么容易MyComponent.parent.x


例子

在下面的代码中,#containerMyComponent. 的坐标#container取决于currentState,但 的坐标相对于MyComponent保持不变#container

<s:states>
    <s:State name="state1" />
    <s:State name="state2" />
</s:states>

<s:Group id="container" x.state1="0" x.state2="35"
                        y.state1="0" y.state2="35">
    <local:MyComponent width="300" height="400" />
</s:Group>

在上面的代码中,如何检测位置(相对于舞台)何时MyComponent发生变化?

我需要从 内部的代码中执行此操作MyComponent,当状态发生变化时仅调用函数是不够的。


想法

到目前为止,我已经尝试听updateComplete,moveresize。但它不起作用。

我也考虑过倾听enterStage或倾听move所有父母的意见,我认为这些选项可能会占用大量资源,希望有更好的方法。


原因

在真正的代码中,我包裹StageWebView在一个 中UIComponent,当父坐标改变时我遇到了问题。我没有办法听那个事件。

如果你以前用过这个类,你就会知道它不能被添加到显示列表中,而是附加到舞台上。这使得管理起来很困难,我想把它包装起来,这样我就可以直接在 MXML 中重用。

4

2 回答 2

0

您可能可以尝试覆盖该类中 x, y 的设置器以及它的全部父类。这样您就不会监听事件,但您将能够通过正常方式判断 x 或 y 何时设置。但是,如果您还想在诸如 right 或 Horizo​​ntalCenter 之类的东西导致东西自动移动时捕捉它,这将不起作用。

于 2013-05-22T19:18:27.293 回答
0

您可以使用MyComponentRef.transform.concatenatedMatrix来获取应用到它的转换。矩阵的txandty属性将服务于您的目的。

于 2013-05-23T06:45:42.883 回答