2011-06-02 217 views
0

所以我在這個mx中加載了一個非常大的圖片:圖像manteinAspectRatio啓用了高度限制,並且照常不工作(Flex絕對不適用於我):加載的圖像調整大小後調整大小布局

<?xml version="1.0" encoding="utf-8"?> 
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx"> 

     <s:Rect top="0" right="0" bottom="0" left="0"> 
      <s:fill> 
       <mx:SolidColor color="#000000"/> 
      </s:fill> 
     </s:Rect> 

     <s:VGroup id="a" top="0" right="0" bottom="0" left="0" horizontalAlign="center" verticalAlign="middle"> 

      <s:Group id="b"> 

       <s:Rect id="c" top="0" right="0" bottom="0" left="0" radiusX="10" radiusY="10"> 
        <s:fill> 
         <mx:SolidColor color="#cccccc"/> 
        </s:fill> 
       </s:Rect> 

       <s:VGroup id="d" paddingTop="10" paddingRight="10" paddingBottom="10" paddingLeft="10"> 

        <mx:Image id="e" source="big.jpg" maxHeight="300" maintainAspectRatio="true" /> 

       </s:VGroup> 

      </s:Group> 

     </s:VGroup> 

    </s:Application> 

big.jpg的寬度比高度大,所以當它被調整大小時,包裝容器會得到正確的新高度,但它們仍然具有舊寬度。

我試圖調用validateNow()的每一個元素上,無效,使用callLater(),調整大小事件,競爭事件......我是一個小白已經厭倦了AS 3.0

UPDATE:

閱讀J_A_X答案,我結束了與此:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <fx:Script> 
     <![CDATA[ 

     import flash.events.Event; 
     import mx.controls.Image; 

     private function fix(event:Event):void { 

      var img:Image = event.target as Image; 
      var h:uint = 300; 

      img.width *= h/img.height; 
      img.height = h; 
      img.removeEventListener("updateComplete", fix); 

     } 

     ]]> 
    </fx:Script> 

    <s:Rect top="0" right="0" bottom="0" left="0"> 
     <s:fill> 
      <mx:SolidColor color="#000000"/> 
     </s:fill> 
    </s:Rect> 

    <s:VGroup top="0" right="0" bottom="0" left="0" horizontalAlign="center" verticalAlign="middle"> 

     <s:Group> 

      <s:Rect top="0" right="0" bottom="0" left="0" radiusX="10" radiusY="10"> 
       <s:fill> 
        <mx:SolidColor color="#cccccc"/> 
       </s:fill> 
      </s:Rect> 

      <s:VGroup paddingTop="10" paddingRight="10" paddingBottom="10" paddingLeft="10"> 

       <mx:Image source="big.jpg" maintainAspectRatio="false" updateComplete="fix(event)" /> 

      </s:VGroup> 

     </s:Group> 

    </s:VGroup> 

</s:Application> 

我希望幫助一個又一個處理的Flex。

+0

我還沒有嘗試你的代碼,但也許你應該嘗試沒有這麼多的容器。其中有一個可以調整圖像大小。 – papachan 2011-06-02 16:12:36

+0

我不明白什麼是不工作。什麼是包裝容器?你爲什麼期望容器自己調整大小?你的代碼中沒有任何東西讓我認爲它應該。您是調整圖像大小,還是保持原樣?這是你的完整代碼嗎? – JeffryHouser 2011-06-02 16:30:00

回答

0

查看圖像後,它似乎需要明確的高度/寬度,否則它不會正確縮小。這是有點愚蠢的不擴展到maxHeight,但你可以總是使用Flex 4.5 Image類,或者只是創建自己的處理最大高度/寬度。