Actionscript 3 检测全局坐标的更改 问题
如何检测组件的全局x y坐标的更改(从组件内部)。所谓全局坐标,我指的是相对于舞台的坐标,而不是相对于容器的坐标 当Actionscript 3 检测全局坐标的更改 问题,actionscript-3,apache-flex,Actionscript 3,Apache Flex,如何检测组件的全局x y坐标的更改(从组件内部)。所谓全局坐标,我指的是相对于舞台的坐标,而不是相对于容器的坐标 当MyComponent.x发生更改时,检测它很容易,但当MyComponent.parent.x发生更改时,就不那么容易了 例子 在下面的代码中,有一个#容器,其中包含MyComponent。#container的坐标取决于当前状态,但是MyComponent的坐标相对于#container保持不变 <s:states> <s:State name="s
MyComponent.x
发生更改时,检测它很容易,但当MyComponent.parent.x
发生更改时,就不那么容易了
例子 在下面的代码中,有一个
#容器
,其中包含MyComponent
。#container
的坐标取决于当前状态
,但是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
等等。。但它不起作用
我还考虑过在所有家长身上收听entertage
或收听move
,我认为这些选项可能需要大量资源,我希望有更好的方法
理由 在真实代码中,我将
StageWebView
包装在UIComponent
中,当父级的坐标发生变化时,我遇到了问题。我没有办法去听那件事
如果您以前使用过这个类,您就会知道它不能添加到显示列表中,而是附加到舞台上。这使得管理起来很困难,我想将其包装起来,以便可以直接在MXML中重用。您可能可以尝试覆盖该类中x,y的setter及其全部父类。这样,您就不会收听事件,但您将能够通过正常方式判断何时设置了x或y。但是,如果您还想在right或horizontalCenter之类的内容导致内容自动移动时捕捉到它,那么这将不起作用。您可以使用MyComponentRef.transform.concatenatedMatrix将转换应用于它。矩阵的
tx
和ty
属性将满足您的需要。我认为这是不可能的,我必须覆盖每个家长的道具,一路走下去。我需要在单个类MyComponent中执行此操作。向每个父级添加事件侦听器实际上更可取,至少可以在运行时动态执行此操作。问题不是找到全局位置,而是检测它的更改。为了获得全球位置,我一直在使用localToGlobal。