2 月 17 2007
Flash Lite2.0 開発事はじめ
つい3日前くらいまで、自分がFlash Lite2.0を触ることになるとは思っていなかったんですが 仕事で開発することになったので、メモ。
まずここから「Flash Professional 8 用 Flash Lite 2 アップデート」をダウンロードして Flash Professional 8で、Flash Lite2.0を開発できるようにしておきます。 http://www.adobe.com/jp/support/flash/downloads.html
それからLite2.0の情報を集めます。 http://www.dango-itimi.com/blog/archives/2006/000912.html http://www.trick7.com/blog/flash_lite/ この辺のブログが参考になりました。
各端末の情報とか ソフトバンク端末情報 ドコモ端末情報 au端末情報 で、自分でマニュアルから調べたLite2.0特有の事項は
- 関数内ではdeleteしてもメモリ解放は行われないその場合、変数にnullを与えることで、ガベージコレクションから消える。
- コンパイル時にSWFのファイルを削減するためにクラスを除外できる。
- ヒープメモリは各デバイスに依存する。
という感じ。
で、今回僕は1機だけ実機を用意できたのですが、すべての人が実機を用意できるわけじゃないので IDE上の「デバイスエミュレーション」が鍵になるのですが、デフォルトでは全然使えるものがないので 自分で用意しました。
僕の場合SoftBank系だけカバーすれば良かったので 画面解像度別に
- QVGA
- VGA
- WQVGA
- QVGA
のSWF表示領域を調べて(僕はクライアントさんから教えてもらった)設定ファイルを作ります。 設定ファイルはここにおいておきますね。
Flash8をインストールしたディレクトリの 「Flash 8/ja/Configuration/Mobile/Devices/」 に放り込んでください。 設定ファイル自体シンプルなので、画面解像度と名前くらいなら簡単に作れます。

きっとこんな感じになるでしょう。
ついでに、僕がつくった便利クラスも 対して便利なわけでなく、fscommand2とか書きたくなかっただけですが・・。 特に「getScreenType()」は現在のSoftBank用に作ったメソッドで 他のキャリアや今後も使える保証は全然ありません。
* デバイス用便利クラス
* デバイス操作に使える静的メソッド群
* @author Mitsuru Haga<mitsuru.haga@gmail.com>
* @version 2007/02/16 17:36
*/
class DeviceUtil {
public static var QVGA:String = 'QVGA';
public static var VGA:String = 'VGA';
public static var WQVGA:String = 'WQVGA';
public static var WVGA:String = 'WVGA';
/**
* デバイスのモデルIDを取得する
* @return
*/
public static function getDevice():String{
fscommand2("GetDevice", '__device__');
return _level0.__device__;
}
/**
* レンダリングに使用する表示領域のサイズを設定します。
*/
public static function setFullScreen():Number{
return fscommand2("FullScreen", true);
}
/**
* 現在使用できるヒープメモリの量をキロバイトで返します。
*/
public static function getFreeMemory():Number{
return fscommand2("GetFreePlayerMemory");
}
/**
* 割り当てられたヒープメモリの合計量をキロバイトで返します
* @return
*/
public static function getTotalMemory():Number{
return fscommand2("GetTotalPlayerMemory");
}
/**
* 画面の解像度を取得する
* @return {x:Number, y:Number}
*/
public static function getScreenResolution():Object{
return {
x:System.capabilities.screenResolutionX,
y:System.capabilities.screenResolutionY
};
}
/**
* スクリーンタイプを取得する静的メソッド
* どのタイプにも当てはまらない場合はQVGAとして返す
* SoftBank用(07/02/16現在)
* @return String スクリーンタイプを表す文字列
*/
public static function getScreenType():String{
var size:Object = getScreenResolution();
var isQVGA:Boolean = size.x == 236 && size.y == 261;
var isWQVGA:Boolean = size.x == 240 && size.y == 350;
var isVGA:Boolean = size.x == 480 && size.y == 540;
var isWVGA:Boolean = size.x == 236 && size.y == 341;
return ( isQVGA ) ? QVGA : ( isVGA ) ? VGA : ( isWQVGA ) ? WQVGA : ( isWVGA ) ? WVGA : QVGA;
}
}