sparkで,画像のはみ出しを切り取る

3 9月

最近,やっと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>