ActionScriptテックラボ

Flash Lite -ActionScript編

先日に引き続き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 ""」と「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
バイブレータが動作している場合に停止します。

関連記事