2009-11-13 4 views
0

이미지가 HBox에로드되는 동적 레이아웃이 있습니다.Flex : 이미지의 너비가 contentWidth와 일치하도록 이미지의 크기를 조절 하시겠습니까?

<mx:HBox ...> 
    <mx:Image height="100%" .../> 
</mx:HBox> 

이미지의 높이 만 이미지에 설정되므로 사용 가능한 모든 수직 공간을 사용할 수 있고 너비는 정의되지 않은 채로 남아 있습니다 나는 그 너비에 따라 너비가 맞춰지기를 기대합니다.

이미지의 높이가 contentHeight와 같음 (높이가 올바르게 조절 됨). 그러나 이미지의 너비는 여전히 measuredWidth (이미지의 원래 너비)와 같으며 그에 따라 크기가 조절되지 않습니다.

예를 들어 이미지의 원래 크기가 800x600이고 HBox의 높이가 300 인 경우 이미지 높이가 300으로 축소되지만 너비는 400으로 축소되지 않고 800으로 유지됩니다.

이미지 폭을 명시 적으로 설정하는 이벤트 리스너를 추가하려고했습니다.

<mx:Image id="img" height="100%" updateComplete="img.width=img.contentWidth;" .../> 

Image.load()를 사용하여 동적으로로드하는 경우 이미지가 처음로드 될 때만 작동합니다. 이미지가 작동을 멈 추면 이미지 너비는 0으로 설정됩니다.

모든 도움/조언을 보내 주시면 감사하겠습니다.

답변

3

Adobe 포럼에서 답변을 얻었습니다.

private function scaleImage():void { 
    img.width = img.contentWidth; 
} 

updateComplete="callLater(scaleImage)" 
+0

정말 유용하고, 거의 항상 나를 데려옵니다! 감사 – robmcm

0

<mx:Box /> 또는 <mx:Canvas />이 아닌 <mx:HBox />을 사용해보세요.

제가 아는 바에 따르면 HBox는 가변 폭을가집니다. 나중에 너비의 합계로 너비를 계산합니다. VBox의 높이와 동일합니다. 추가

+0

도 작동하지 않았습니다. 내가 HBox 레이아웃이 필요하기 때문에 을 시도하지 않았습니다. 오른쪽에있는 이미지 옆에 텍스트를 표시해야합니다. –

0

시도 : maintainAspectRatio="true"


업데이트 1 : 귀하의 코멘트에 회신에서당신이 예를 here에서 볼 수 있듯이 당신이 찾고있는 것을입니다. 종횡비 유지는 폭이 & 인 관계를 유지함을 의미합니다.

+0

이 플래그는 내 상황과 관련이없는 이미지 왜곡을 제어합니다. 이미지 자체는 여전히 올바른 비율로 표시되며 이미지 컨트롤의 너비는 비율을 벗어납니다. 감사. –

+0

@Tong 내 업데이트보기 – eglasius

+0

혼란 스럽지만, 높이/너비는 이미지 콘텐츠의 높이/너비와 이미지 컨트롤의 높이/너비의 두 가지 세트에 대해 설명합니다. maintainAspectRatio의 기본값은 true이므로 이미지 콘텐츠의 높이와 너비가 올바르게 조정됩니다. 그러나 이미지 컨트롤의 너비는 높이로 조절되지 않으므로 컨트롤에서 HBox에서 추가 "빈"가로 공간을 사용하게됩니다. 도움을 주셔서 감사 드리며 충분히 설명을 해 주시기 바랍니다. –

0

관찰 된 행동이 문서화 된 버그, ERR, 기능입니다 : 내 솔루션처럼), 거의 있었다 단지 callLater를 (사용해야합니다.
이미지 클래스 문서는 이미지 높이가 크기 조정 된 이미지의 높이임을 나타내지 만 이미지 너비는 크기 조정되지 않은 이미지의 너비를 나타냅니다. 그리고 그 중 하나는 레이아웃에 사용되어야합니다.
높이와 너비가 다르게 처리되는 이유와 크기 조정 된 이미지가 컨테이너의 공간을 낭비해야하는 이유는 알 수 없지만 코딩 방법에 대한 것입니다.

라인

updateComplete="callLater(function():void{xxx.width=xxx.contentWidth;})" 

(별도의 스크립트 기능이 필요)이 치료. 그러나 이것은 정말로 필요하지 않습니다.

관련 문제