技術評論社より2月10日に発売された拙著
だが,
配列エレメントをforループで取出す
まずは,
var my_array:Array = [my0_mc, my1_mc, my2_mc];
for (var i:Number = 0; i < my_array.length; i++) {
my_array[i].x = 10;
my_array[i].y = 10;
}
このスクリプトは配列に納めたMovieClipインスタンスをforループですべて取出して,
第1は,
第2に,
第3は,
- 配列エレメントを取出すforループの最適化
- 配列インデックスとカウンタ変数は整数型
(int/ uint) で指定 - 継続条件に用いるArray.
length プロパティは予め変数にとる - 取出したエレメントは型指定した変数に入れる
- 配列インデックスとカウンタ変数は整数型
これら3つの修正を加えて書直したのが,
var my_array:Array = [my0_mc, my1_mc, my2_mc];
var nLenght:uint = my_array.length;
for (var i:uint = 0; i < nLength; i++) {
var my_mc:MovieClip = my_array[i];
my_mc.x = 10;
my_my.y = 10;
}
配列エレメントをforループで加える
つぎは,
var my_array:Array = new Array();
for (var i:uint = 0; i < 10; i++) {
my_array.push(i);
}
これは難問だろう。ActionScript 3.
- 配列エレメントを加えるforループの最適化】
- 配列インスタンスは配列アクセス演算子[]でつくる
- 配列エレメントは配列アクセス演算子[]で加える
var my_array:Array = [];
for (var i:uint = 0; i < 10; i++) {
my_array[i] = i;
}
これを見て,
コンストラクタよりもリテラル記述が速いのは
メソッドからインスタンスを得ることなく,
「オーバーロード」
Array()コンストラクタメソッドには,
表1 コンストラクタメソッドの引数によってつくられる配列の違い
コンストラクタ呼出し | 引数の意味 | つくられる配列 |
new Array() | エレメント | [] |
---|---|---|
new Array(3) | 長さ | [undefined, undefined, undefined] |
new Array(0, 1, 2) | エレメント | [0, 1, 2] |
new Array("a") | エレメント | ["a"] |
さあ,
それに対して,