mx:Resize
Flex で画像の幅を変更するエフェクトを使用していますが (高さはそのままにしておきます)、画像をページの垂直方向の中央に配置したままにします。写真の縦横比を計算し、新しい y 値を計算して中央に配置することはできますが、mx:Move
効果も含める必要があります。Flex にはもっと簡単な方法があることを願っています。
これは、実行時に画像が読み込まれて交換されるフォト ギャラリー用です。そのため、updateComplete イベントが発生するたびに縦横比と垂直位置を再計算することは避けたいと考えています。それはとても面倒です。
mx:VBox
ボックスがすべてのセンタリングを行うと考えて、画像をwithの中に入れてみverticalAlign="middle"
ましたが、これはアプリが最初に起動したときにのみ発生するようです-効果が再生される期間中に位置を徐々に調整する必要があります(途中でも中心に置いてください)。
以下は簡略化された例です (これは機能しません)。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="600" height="600">
<mx:Resize id="fxResize" target="{imgPhotoA}" widthTo="350" duration="500" />
<mx:Button x="10" y="10" label="Resize" click="fxResize.play()" />
<mx:VBox id="boxPhotoA" x="100" y="20" height="500" width="350" verticalAlign="middle" borderStyle="solid" verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Image id="imgPhotoA" width="60" maintainAspectRatio="true" source="http://sstatic.net/so/img/logo.png"/>
</mx:VBox>
</mx:Application>
私は Flex の初心者です。Adobe サンプル フォト ギャラリーのソースを見ても、解決策を理解するのに役立ちませんでした。効果を使用しているとは思いませんが、サイズと位置を変更する独自のルーチンを作成しています。コードは恐ろしく見えます!