localToGlobal flex spark air中的输出不正确

时间:2013-01-25 17:18:02

标签: flex actionscript air

使用localToGlobal堆叠

我有这段代码(见id = search):

<s:NavigatorContent id="clients" width="100%" height="100%" >
    <s:layout>
        <s:VerticalLayout gap="0"
                          paddingBottom="0"
                          paddingLeft="0"
                          paddingRight="0"
                          paddingTop="0"/>
    </s:layout>

    <s:SkinnableContainer backgroundColor="0xF3F3F3" width="100%" height="40">
        <s:layout>
            <s:HorizontalLayout verticalAlign="middle"
                                paddingLeft="3"
                                paddingBottom="2"
                                paddingTop="2"
                                paddingRight="3"/>
        </s:layout>

        <s:Button id="addClientBtn"
                  label="{resourceManager.getString(
                      'myResources','workplace.addClientBtn')}"
                  icon="{Images.add}"
                  click="{addClient()}"
                  doubleClickEnabled="true"
                  doubleClick="{openHelp('NewClient')}"/>

        <s:Spacer width="100%" />

        <components:SearchClients id="search"/>
    </s:SkinnableContainer>
</s:NavigatorContent>

在creationComplete事件中 - &gt;

search.localToGlobal( new Point(search.x,search.y)) 

Output returns  
(x=0, y=32)

但在视觉上我看到这个输出是错误的。应该像〜(x = 300,y = 32)

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您计算相对于搜索的点,因此您需要设置零点:

search.localToGlobal(new Point(0, 0));

答案 1 :(得分:0)

这不太正确:

search.localToGlobal(new Point(search.x,search.y));

search.x和search.y是相对于NavigationContainer的坐标,其中search.localToGlocal期望相对于搜索点,即x,y指向搜索本地点并将它们转换为全局坐标。

我想你想要的是:
    search.localToGlobal(new Point(0,0));

您可能想要检查ViewStack的creationPolicy(默认情况下是auto),如果此视图是进行此计算时的第一个视图。默认情况下,在调用应用程序creationComplete方法时,视图堆栈中只存在一个视图(第一个)。