1

我正在尝试动态更改组件在我的应用程序上的位置。每次用户更改他/她的浏览器窗口的大小时,有没有办法可以调用调整大小事件监听器?

4

3 回答 3

1

是的,将 BrowserResizeHandler 作为珠子添加到应用程序中,并在 initialView 上收听“sizeChanged”。

像这样的伪代码(未经测试):

<js:Application applicationComplete="{myView.addEventListener("sizeChanged", sizeChangedHandler)}>
<js:beads>
<js:BrowserResizeHandler/>
</js:beads>
 <initialView>
   <MyView id="myView/>
 </initialView>
</js:Application>
于 2019-09-27T09:24:17.860 回答
0

我不知道如何使珠子起作用。在找到正确的问题时遇到问题。但是,我使用以下方法来调用调整大小:

<js:Application applicationComplete="initiateApplication(event)">   
      <fx:Script>
        <![CDATA[
        protected function initiateApplication(event:Event):void{
                    window.addEventListener("resize", resizeApp);
        }
        protected function resizeApp():void{
                    trace(this.height=document.documentElement.clientHeight)
                    trace(this.width=document.documentElement.clientWidth)
        }
    ]]>
    </fx:Script>
</js:Application>

如果有人用过另一种方法,请分享。

于 2019-09-28T19:12:42.377 回答
0

要扩展https://stackoverflow.com/users/11577184/yishayw的答案:当应用程序更改大小时,BrowserResizeHandler 珠会sizeChanged从视图中调度一个事件,所以这样的事情应该会有所帮助:

<js:Application applicationComplete="onComplete()">
  <fx:Script>
    <![CDATA[
      protected function onComplete():void{
        myView.addEventListener("sizeChanged", handleResize);
      }
      protected function handleResize():void{
        // do something with the new size...
        trace(this.height)
        trace(this.width)
      }
    ]]>
  </fx:Script>
  <js:beads>
    <js:BrowserResizeHandler/>
  </js:beads>
  <initialView>
    <MyView id="myView/>
  </initialView>
</js:Application>

如果您的视图位于单独的 MXML 文件中,则处理调整大小的代码将放在那里,而不是主应用程序 mxml 文件。

我建议查看各种风格的 Flex 布局珠,因为我发现这使得调整大小处理程序几乎是不必要的。

于 2019-10-02T10:52:40.720 回答