最近,やっとflexBuilder 3 から Flash Builder 4.5 に変更しました。sparkに慣れたいと思って,以前に書いたflashを書き直しています。
さて,枠の大きさよりも画像が大きいときに,余った部分を切り取りたいと思ったのですが,色々と難しいことになりました。枠としてはHGroupを使います。
Image に大きさを指定して,そのサイズよりも大きいものを配置します。はみ出した部分は,fillModeの設定をclipとしておけば,切り取られることになります。Imageには,枠の縦方向の位置で,真ん中に配置する機能があって,VerticalAlign というプロパティで設定します。このVerticalAlign をmiddle にして,画像の中心をずらさず,上端と下端が切り取られるようにしたかったのですが,画像の実際のサイズが Image の height よりも大きくなると,verticalAlignが機能しなくなります。画像の上端を枠の上端にそろえてしまって,画像の中心は半分よりも下の方に表示されてしまいます。
そこで色々と試してみて,下記のコードにたどり着きました。まず, Image には大きさを指定せず, verticalAlign は外の箱 HGroup で設定する。HGroup にマスクを設定する。
これで,箱よりも大きな画像を配置しても,縦位置の真ん中がずれません。
<s:HGroup x=”45″ y=”20″ width=”200″ height=”100″ horizontalAlign=”left” maskType=”clip” paddingBottom=”0″ paddingLeft=”0″ paddingRight=”0″ paddingTop=”0″ verticalAlign=”middle”>
<s:mask>
<s:Group>
<s:Rect width=”200″ height=”100″>
<s:fill>
<s:SolidColor/>
</s:fill>
</s:Rect>
</s:Group>
</s:mask>
<s:Image id=”image” scaleX=”1.7″ scaleY=”1.7″ source=”{何か画像.swf}”/>
</s:HGroup>