concoquo

Flash Lite 1.1で気をつける事

モバイル向けのプラットフォームであるFlash Lite。その中でも初期のバージョンで、わりと古めの機種にも対応しているFlash Lite 1.1での制作で気をつけることのメモ。

以前待ち受け画面を作った時に試したバージョンなんだけど、いろいろ忘れている事が多かったので最初は身体が慣れるのに苦労した。

基本的にはActionScript1.0、Flash Player4と同等で、それプラス携帯電話固有の情報をfscommandで扱えたりする。
以下に列挙。

Functionの概念がない

代替として、フレームスクリプトを書いてラベルを貼り

call("FrameLabel");

でスクリプトを呼び出す。引数は渡せない。

Arrayの概念がない

代替として、文字列とeval()を使って

a0 = "ichi";
a1 = "ni";
a2 = "san";
for(i=0; i<3; i++){
	trace( eval("a" add i) );
}
// 出力 ichi, ni, san

保持・呼び出しする。

MovieClipの生成。

for(i=0; i<9; i++){
	newName = "mc" add i*9;
	duplicateMovieClip( "tempMC", newName, i);
	eval(newname)._x = i*10;
}

thisとかreturnとかvarとかない

_root_parentはある。それぞれ/:../:でも代替できる。

tellTarget(){}内での_parentの扱い

a = 0;
tellTarget("mc"){
	_x  = _parent.a;
}

みたいな場合、mcから見た階層になるので同タイムラインに記述しても_parentが必要になる。

変数名の大文字と小文字は区別しない

a = 0;
A = 1;
trace(a);

AS2、AS3なら当然のように0が出力されるけど、AS1だと、aとAを同じ変数とみなすので値が上書きされて1が出力されます。普段あまり意識しないで使ってると意外とハマる。

文字列の連結は+じゃなくてadd

比較は==じゃなくてeq!=じゃなくてne

Numberのキャストはint()で

a = "02";
trace( Number(a))
// 出力 = 02

trace( int(a))
// 出力 = 2

(a | 0) は使えない

Math.floor()を代わりに使う。

substring( str, 0, i) と substring( str, 1, i) の返る値が同じ

これしばらく悩み続けました。

str = "abcdefg";
trace( substring( str, 0, 3) );
// 出力 = abc

trace( substring( str, 1, 3) );
// 出力 = abc

trace( substring( str, 2, 3) );
// 出力 = bcd

どう考えてもおかしいんですがそういうことみたい。