1

与 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 事件中 ->

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

Output returns  
(x=0, y=32)

但从视觉上我看到这个输出是错误的。应该类似于 ~ (x=300, y=32)

有人可以帮忙吗?

4

2 回答 2

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(默认情况下它是自动的)以及该视图是否是执行此计算时的第一个视图。默认情况下,当调用应用程序 creationComplete 方法时,视图堆栈中只会存在一个视图(第一个)。

于 2013-01-25T22:25:44.620 回答
0

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

search.localToGlobal(new Point(0, 0));
于 2013-01-25T17:29:04.097 回答