iPhoneの画面密度のため、画像アセットが大きくなります。そのため、Flexコンポーネントにアイコンやイメージを指定する場合は、このフォームを使用します。当然のActionScriptを使用してモバイルアプリでイメージアセットのサイズを管理するにはどうすればよいですか?
<s:ViewNavigator id="tab1" label="Tab1 width="100%" height="100%" firstView="views.Tab1">
<s:icon>
<s:MultiDPIBitmapSource source160dpi="@Embed('assets/tabIcon.png')"/>
</s:icon>
</s:ViewNavigator>
Flexはこれを正しくレンダリングし、それがどうあるべきかにサイズを調整します。
しかし、自分でイメージを読み込むと、サイズが2倍に見えるように吹き上がって表示されます。
これは、タブバーをオーバーライドするときに使用します。
public class TabbedViewNavigatorTabBarSkin extends ButtonBarSkin
{
[Embed (source="/assets/tabBar.png")]
private var TabBarPng:Class;
override protected function createChildren():void
{
var bgb:Bitmap = new TabBarPng() ;
addChild(bgb);
}
}
画像がぼやけて表示されます。私は間違って何をしていますか?
applicationDPIが設定されていますか。そうならば、FlexはapplicationDPI/runtimeの実際のDPIに基づいてすべてを拡大/縮小します。したがって、アプリケーションDPIが実際の実行時DPIよりも低い場合は、コンポーネントを拡大します。最初のケースでは、指定するものと実行時のDPIが何であるかに基づいて、使用する画像を具体的に選択するクラスを使用しています(スケーリングがないと思います)。他のケースでは、ビットマップを使用するように指示していますが、すでに適切に拡大/縮小されていることを指定していません... MultiDPIBitmapSourceを使用して、source160dpi = new TabBarPng()を設定することはできませんか? – shaunhusain
私はあなたが何を意味しているか分かりません。このコードを投稿してください。それがうまくいくなら、私はそれを使うのが嬉しいです。それは良いアプローチのようです。そして、いいえ、私はアプリケーションDPIをどこにも特別に設定しませんでした。私の画像は72ppiと網膜のサイズです。 – Ska
間違い、160に設定されています。 – Ska