如何检测组件的全局x y坐标(来自组件内)的更改。通过全局坐标,我指的是相对于舞台的坐标,而不是容器。
检测MyComponent.x
何时更改很容易,但在更改MyComponent.parent.x
时却不那么容易。
在下面的代码中,#container
保留MyComponent
。 #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
,move
,resize
等。但它不起作用。
我还考虑过听取enterStage
或听取move
所有家长的意见,我认为这些选项可能是资源密集型的,我希望有更好的方法。
在实际代码中,我将StageWebView
包裹在UIComponent
中,当父级坐标发生变化时,我遇到了问题。我没办法听那个事件。
如果您以前使用过此课程,您将知道它无法添加到显示列表中,而是附加到舞台上。这使得它很难管理,我想将它包装起来,以便我可以直接在MXML中重用。
答案 0 :(得分:0)
您可能会尝试覆盖该类中x,y的setter加上其完整的父级。这样你就不会听事件,但是你可以通过正常方式判断x或y是什么时候设置的。但是,如果您还想在正确或水平中心之类的东西自动移动时捕获它,这将无效。
答案 1 :(得分:0)
您可以使用MyComponentRef.transform.concatenatedMatrix
来应用转换。矩阵的tx
和ty
属性将满足您的目的。