s26

整列クラス

クラスを作成してみた。

先日のアリの軍団の配列のような並び方。

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を小さくすれば大丈夫です。