先日に引き続きFlash Lite特集です。
参考
Flash Lite 1.1は Flash 4ベースの仕様となっているため、現在良く使われているActionScript3.0とは記述方法が大きく異なります。
インライン再生とインタラクティブ再生
Flash Liteのswfファイルはインライン再生とインタラクティブ再生の2種類があります。
- インライン再生
- HTMLページにswfファイルを読み込む。キーイベントは使用不可。複数のswfファイルを読み込ませることも可能ですが、対応していない機種もあるので、HTMLページにswfファイルを表示させる数は1つとしておくのが無難です。
- インタラクティブ再生
- swfファイルを直接表示。キーイベントは使用可能。携帯の画面サイズに合わせて縦・横の比率が維持されたまま自動的にサイズが調整されます。
キーイベント
キーイベントは下記が利用可能です。
- 上下の方向キー
- 決定キー
- ダイヤルキー(0~9, #, *)
※上下キーはフォーカスの移動となり、PCでのTabキーに当たります。上下キーは「keyPress "
※SoftBankは方向キー(上/下/左/右)も使用可能です。
Flash Lite 1.1のスクリプト制御
ムービークリップのプロパティの取得と設定方法
ムービークリップのプロパティの取得と設定に関しては、PC版のFlashと同様にドットシンタックスを利用することができます。
_root.mc.item._x = 100;
関数を使ったプロパティの取得、設定も可能です。
// ムービークリップitemの _x プロパティの値を取得 getProperty("/mc/item", _x); // ムービークリップitemの _x プロパティに100を設定 setProperty("/mc/item", _x, 100);
getProperty、setProperty関数を使えば、ムービーリップの名前を動的に指定することも可能です。
mc_name = "item"; // ムービークリップitemの _x プロパティの値を取得 trace( getProperty("/mc/" add mc_name, _x) );
タイムライン制御
Flash Lite 1.1では下記のようにタイムラインを制御することができません。
_root.mc.stop();
タイムラインを制御する際はではtellTarget()関数を使用します。
// _rootにあるムービークリップmcを再生する tellTarget("/mc") { play(); }
- tellTarget("/")とtellTarget("_root")は同じ意味
- tellTarget("../")とtellTarget("_parent")は同じ意味
- レベルを指定する場合はtellTarget("_level0")と記述
変数
変数を指定するには、ドットシンタックスを使った方法と、スラッシュシンタックスを使った方法があります。
ルートにある「val」という変数を絶対パスで指定します。
_root.val /:val
ムービークリップmcで宣言されたvalという変数を絶対パスで指定します。
_root.mc.val /mc/:val
動的に変数を参照するには次のようにします。
// 出力結果は abc no = 1; eval("a" add no) = "abc"; trace(a1);
文字列
Flash Lite 1.1は、文字列と数値の連結と比較方法が違います。
文字の連結を行う際は、+演算子の代わりにadd演算子を使用します。
a = "Flash" add "Lite";
文字列を比較する際は、==演算子の代わりにeq演算子を使います。非等価は!=演算子の代わりにne演算子を使います。
a = "ABC" if ( a eq "ABC" ){ ... }
配列の代用
Flash Lite 1.1では、配列変数が用意されていません。配列の代用が必要な際は、eval()関数を使って仮想的に処理させるとよいでしょう。
仮想配列
max = 5; cnt = 0; for( i=0; i < max; i++ ){ eval("array" add i) = "..."; cnt++; } trace(array0); trace(array4);
多重配列
array1_1 = ".."; array1_2 = ".."; array2_1 = ".."; array2_2 = ".."; for ( i=1; i<=2; i++ ){ for( j=1; j <= 2; j++ ){ trace( eval( "array" add i add "_" add j )); } }
enterFrameの代用
Flash Lite 1.1では、enterFrameが使用できません。
毎フレームごとに処理を行う場合は、まず空のムービークリップを用意します。1フレーム目に必要なスクリプトを記述し、そのフレームをループさせればenterFrameの代用になります。
フレーム間隔を増やしたい場合は、たとえば5フレーム毎に実行したい場合は、5フレーム目でループさせます。
functionの代用
Flash Lite 1.1では、functionの関数定義が使用できません。
その代わり、フレームラベルを利用したcall()関数が用意されています。ただし、引数や戻り値を持たせることができません。
call()関数を使う場合、まず空のフレームを作成し、そこに関数として切り出したいスクリプトを記述します。そのスクリプトを呼び出したい際、call()関数でそのフレームを指定します。
たとえば、func01というラベルのフレームにあるスクリプトを呼び出したい場合は、次のようにします。
call("func01");
ボタンイベントとキーイベント
ボタンにイベント処理を関連付けるには、ステージに配置したボタンのボタンアクションにスクリプトを記述します。
on(press) { ... }
onハンドラのイベントは4種類がサポートされています。
- press
- release
- rollOver
- rollOut
[1]キーが押された時に実行するイベントは下記の通りです。
on(keyPress "1") { ... }
getURLから電話番号を発信
ActionScript2.0ではgetURLでページの移動を実現しますが、Flash Lite1.1でも同様です。さらに、電話番号の発信もサポートされています。
getURL("tellto:09012345678");
auとソフトバンクに関しては、Flash Liteから衛星利用測位システム(GPS)の起動も可能です。
getURL("device:location?url=CGIのURL"); //auの場合(FlashLite2.0以降) getURL("location:auto?url=CGIのURL"); //ソフトバンクの場合
getURL()が処理できる条件は、onハンドラの時のみですのでご注意ください。
fscommand2
fscommand2()関数は携帯端末の各種情報を取得したり、制御することができます。
よく使用する機能は以下になります。
- 日時の取得
- 電波状態の取得
- 電池の状態の取得
- バイブを鳴らす
たとえば、日付の取得は下記の通りです。
thisYear = fscommand2("GetDateYear"); // 年 thisMonth = fscommand2("GetDateMonth"); // 月 today = fscommand2("GetDateDay"); // 日
バイブを鳴らす場合は以下になります。
//2秒、1秒間隔で、2回鳴らす status = fscommand2("StartVibrate", 2000, 1000, 2);
注意しなければならいのは、各キャリアによって取得できる情報が違ったり、対応されていない場合もあります。
fscommand2 コマンド
- ExtendBacklightDuration
- バックライトの継続時間を指定した時間だけ延長します。
- FullScreen
- レンダリングに使用する表示領域のサイズを設定します。
- GetBatteryLevel
- 現在のバッテリーレベルを返します。
- GetDevice
- Flash Lite が実行されているデバイスを識別するパラメータを設定します。
- GetDeviceID
- デバイスの一意の識別子 (シリアル番号など) を表すパラメータを設定します。
- GetFreePlayerMemory
- Flash Lite が現在使用できるヒープメモリの量をキロバイトで返します。
- GetMaxBatteryLevel
- デバイスの最大バッテリーレベルを返します。
- GetMaxSignalLevel
- 現在の最大の信号の強さを数値として返します。
- GetMaxVolumeLevel
- デバイスの最大音量レベルを数値で返します。
- GetNetworkConnectionName
- アクティブなネットワーク接続またはデフォルトのネットワーク接続の名前を返します。
- GetNetworkConnectStatus
- 現在のネットワーク接続ステータスを示す値を返します。
- GetNetworkGeneration
- 現在のモバイルワイヤレスネットワークの世代 (2G、モバイルワイヤレスの第 2 世代など) を返します。
- GetNetworkName
- パラメータを現在のネットワーク名に設定します。
- GetNetworkRequestStatus
- 最新の HTTP 要求のステータスを示す値を返します。
- GetNetworkStatus
- 携帯端末のネットワークステータス (ネットワークが登録されているか、携帯端末が現在ローミング中かどうか) を示す値を返します。
- GetPlatform
- 現在のプラットフォーム (広い意味ではデバイスのクラス) を識別するパラメータを設定します。
- GetPowerSource
- 現在、バッテリーを電源としているか、外部電源を使用しているかを示す値を返します。
- GetSignalLevel
- 現在の信号の強さを数値で返します。
- GetTotalPlayerMemory
- Flash Lite に割り当てられたヒープメモリの合計量をキロバイトで返します。
- GetVolumeLevel
- デバイスの現在の音量レベルを数値で返します。
- Quit
- Flash Lite プレーヤーの再生を停止して終了します。
- ResetSoftKeys
- ソフトキーを元の設定にリセットします。
- SetFocusRectColor
- フォーカス矩形のカラーを自由にできます。
- SetInputTextType
- 入力テキストフィールドを開く際のモードを指定します。
- SetSoftKeys
- モバイルデバイスのソフトキーをマッピングし直します。
- StartVibrate
- 携帯端末のバイブレータ機能を作動させます。
- StopVibrate
- バイブレータが動作している場合に停止します。