整列クラス
クラスを作成してみた。
先日のアリの軍団の配列のような並び方。
var p:Object = new Layout().order_stage(左上のx, 左上のy, 物体の横幅, 物体の縦幅, 間隔, 個数, ステージ幅);
p.xに配列で、x座標
p.yに配列で、y座標
が入ります。
img_listの中にイメージがn個存在していた場合に
for(var i:uint = 0 ; i < n ; i++){ img_list[i].x = p.x[i] img_list[i].y = p.x[y] addChild(img_list[i]); }
とすると整列します。
クラス内部は以下
package { /** * ... * @author shun */ public class Layout { /** * @param _x:初期の左上のx座標 * @param _y:初期の左上のy座標 * @param _width:並べるものの横幅 * @param _height:並べるものの縦幅 * @param _margin:並べるものの間隔 * @param _n:並べるものの個数 * @param _swidth:ステージの横幅 * @return:ステージ上の横幅 */ function order_stage(_x:Number,_y:Number,_width:Number,_height:Number,_margin:Number,_n:uint,_swidth:Number):Object { var limited_width = _swidth - _x; //その幅に入れる個数。 var w_num = Math.floor(limited_width / (_width + _margin)); var x_list:Array = new Array(); var y_list:Array = new Array(); for (var i:uint = 0 ; i < _n ; i++ ) { x_list.push((i % w_num) * (_width + _margin)+_x); y_list.push(Math.floor(i / w_num)*(_height + _margin)+_y); } var obj:Object = new Object(); obj.x = x_list; obj.y = y_list; return obj; } } }
右をぴったししたくない場合は_swidthを小さくすれば大丈夫です。