FlashLite1.1とActionScript1との相違点で注意すべきこと
FlashLite1.1 == ActionScript1ではない
ActionScript1相当のFlashLite1.1では、変数に明示的な型宣言がありません。
演算子に応じて内部で型変換が行われているようで、下記のような事もできてしまいます。
str1 = "1"; str2 = "10"; str3 = str1 + str2; trace( str3 );//11
この性質を利用して、取り扱う定数が多い場合はストリングを配列代わりに値を保持し、substringで取り出すという手法もあります。
numList = "0123456789"; num1 = substring( numList, 0 , 2 ); num2 = substring( numList, 0 , 4 ); sum = num1 + num2; trace( sum );//124
しかし、FL1.1がAS1相当ということを踏まえて上記のような式をFlash Player5で実行していた際、FlashLite1.1と実行結果が違う事に気づきました。
AS1では、FL1.1と同様に"add"を用いた文字列連結が可能ですが、同時にFL1.1では不可能な"+"での文字列連結ができてしまいます。そのため、AS1で上記のように文字列を数式として実行する場合、小数の切捨てに使用されるint()を使用してムリヤリ数値にキャストすることで実現できます。
numList = "0123456789"; num1 = int( substring( numList, 0 , 2 ) ); num2 = int( substring( numList, 0 , 4 ) ); sum = num1 + num2; trace( sum );//124
この対策は自動的に型変換されるFL1.1では必要ないかもしれませんが、何しろたまに信用ならないところがあるFlashLiteです。数値と文字列が混在する場合は、型を明確にしておくという意味でも試してみる価値があるのではないかと思います。