【问题标题】:Incorrect output in localToGlobal flex spark airlocalToGlobal flex 火花空气中的输出不正确
【发布时间】:2013-01-09 17:21:48
【问题描述】:

与 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)

有人可以帮忙吗?

【问题讨论】:

    标签: apache-flex actionscript air


    【解决方案1】:

    你计算点相对于搜索,所以你需要设置零点:

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

    【讨论】:

    • trace("--> ",search.localToGlobal(new Point(0,0))) 输出 --> (x=0, y=32)
    • 有点奇怪,我需要你的代码来看看,也许你的搜索组件放在后面然后你计算全局点。另一种方式:search.parent.localToGlobal(new Point(search.x, search.y));
    • 数十小时后,我发现了 ViewStack 中的问题。如果我将组件放在第一位 - 计算正确,但如果我放在第二位并编写 viewstack.selectedChild=myComponent(search) - 返回 (0,0)。
    【解决方案2】:

    这不太正确:

    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 方法时,视图堆栈中只会存在一个视图(第一个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多