2次元配列を扱うクラスです.縦横の要素数の限度はなく,任意の座標に要素(任意の値,オブジェクト)を格納できます.
Main
m=new Matrix;
m.set(3,5,"test");
print(m.get(3,5)); // test
m.set(4,6,{name:"tonyu"});
print(m.get(4,6).name);// tonyu
new Matrix
空のMatrixを作成します.
new Matrix(data)
指定されたデータをもつMatrixを作成します.dataにはオブジェクトを指定します.キーには横座標,縦座標をあらわす数値をカンマで区切った文字列を与えます(例:"12,34").
undefinedが返ります.undefinedを返します.left, top: 切り出す位置の左上の座標(必須)right, bottom: 切り出す位置の右下の座標(width,heightを指定した場合は省略)width, height: 切り出す領域の幅と高さ(right,bottomを指定した場合は省略)keepXY: trueを指定した場合,切り出したあとの新しいMatrixオブジェクトをにおいて,各データのある座標をこのMatrixオブジェクトと同じ座標にする.falseを指定したり省略したりした場合,切り出した範囲の左上(left,top)にあるデータは,新しいMatrixオブジェクトにおいては(0,0)の位置に配置され,他のデータの座標もそれに準じてずれる.options には次を指定できますdirs 隣接する領域の数.4または8を指定.4を指定した場合,上下左右のみを隣接するとみなし,8の場合は斜めも含めて隣接するとみなす.省略した場合はneighborDirsを用いる.includeEmpty trueを指定した場合,データのない要素も含めて結果に返す(valueはundefinedになる){x:x座標, y:y座標, ox:中心からの変位のx座標, oy:中心からの変位のy座標, value:データ }{x: 横位置, y: 縦位置, value:書き込まれた値 }をオブジェクトにして渡します.get(x,y)で読み出したときに,値がundefined(未設定)の場合に呼び出されます.{x: 横位置, y: 縦位置, set:書き込む値を引数に渡して,(x,y)に書き込む関数 }をオブジェクトにして渡します.次のようにすると,データが格納されている領域を囲う四角形の領域を繰り返します.
// mはMatrixクラスのオブジェクト
for (x,y,d in m) {
// xmin<=x<=xmax, ymin<=y<=ymax をみたすすべての座標について繰り返す
// x,y に座標, dにデータ(格納されていない場所ではundefined)
}
データのない点を繰り返したくない場合は,次のようにkeysIteratorを使います.
// mはMatrixクラスのオブジェクト
for (x,y,d in m.keysIterator()) {
// x,y に座標, dにデータ
}