モバイル向けのプラットフォームである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
どう考えてもおかしいんですがそういうことみたい