FlexにおけるRetinaDisplay対応

持っている端末がiPhone3GSなので、デスクトップ上でデバッグするときもシミュレータはiPhone3GSの設定を選択しています。
今日、何の気なしにシミュレータ設定をiPhone4にしてみたのですよ。
そしたら、アプリケーションの画面がシミュレータの左上4分の1サイズに!

前バージョンをAdobeProで作っていたときは生じなかった問題です。
それも当然。AdobeProのときは、絵もボタンもすべてベクターデータだったので、実行時に勝手に拡大縮小してくれるのです。
(縦横比率の問題はさすがに解決してくれないけどiPhone3GS,iPhone4がターゲットだったので問題なし)
今回はProで作ったベクターデータをビットマップデータに出力して使ってますしね。
画像の位置とかの座標指定とかも、多分、Proはうまく倍率をかけて解決してくれてるはず。ProのときはiPhone4シミュレートしてないけど、多分。。。

この他にも、Proはかゆいところに手が届くというか、いろいろ勝手にやってくれるので、今更になって、ありがたみを感じます。
まあちゃんと重い開発をするならFlashBuilderなりFlashDevelopがやっぱりいいけどね。。。

脱線しました。
この問題の解決策は以下。
http://help.adobe.com/ja_JP/flex/mobileapps/WSa8161994b114d624-33657d5912b7ab2d73b-7fe2.html#WSe4e4b720da9dedb53d70042612e27c5c3d4-7ffc
http://help.adobe.com/ja_JP/flex/mobileapps/WS19f279b149e7481c682e5a9412cf5976c17-8000.html
http://ameblo.jp/n-value-consulting/entry-10560273913.html
http://www.adobe.com/jp/devnet/flex/articles/mobile-development-flex-flashbuilder.html
えーっと、結論からいうと、flex使ってる場合は、applicationDPIというのをrootのタグに設定すればいいのですよ。
実行時に、実際のDPIがapplicationDPIと異なる場合、アプリケーションを全体的に倍率かけてくれます。
RetinaDisplay用に2倍解像度画像とか用意するつもりがなければこれでRetinaDisplay対応は完了ですね。
画像を解像度ごとに用意するとアプリ容量が重くなるので僕はこれで十分です。
僕はこれまでiPhone3GSのシミュレータで作ってきて、座標値とかもそのつもりで書いてるので、160に設定。

あ〜、でも、今後、AndroidiPad向けに、アスペクト比のことも少しは考えないとなあー。

最後に、今回iPhone4に改めて感嘆しました。
だって、シミュレータ起動したら、画面が僕のMacBookだと入らないんだもん。
PCを超えるなんてすごい解像度の高さ。