import classes.layout.*; import classes.column.*; import classes.util.*; import mx.containers.*; class GridLayout extends Layout{ private var mytimeline:MovieClip;//columnを貼り付ける場所 private var ctype:String="windowcolumn";//columnのタイプ private var myclist:Array=new Array();//columnのリスト private var pressx:Number;//columnをプレスし始めたときのx座標 private var pressy:Number;//columnをプレスし始めたときのy座標 private var xchklist:Array=new Array();//column入れ替えx座標チェック用リスト private var ychklist:Array=new Array();//column入れ替えy座標チェック用リスト private var xnum:Number;//1行に入れるcolumn数 private var ynum:Number;//何列表示させるか private var centerx:Number;//columnの中央x; private var centery:Number;//columnの中央y; private var columnw:Number;//columnの幅 private var columnh:Number;//columnの高さ public function GridLayout(tm:MovieClip,datanum:Number){ mytimeline=tm; var margin:Number=5;//columnの外側の間隔 var stagewidth:Number=mytimeline._width-margin; var stageheight:Number=mytimeline._height-margin; xnum=6; ynum=Math.ceil(datanum/xnum); columnw=stagewidth/xnum-margin; columnh=stageheight/ynum-margin; centerx=columnw/2; centery=columnh/2; var columncons:ColumnConstructor=new ColumnConstructor(); for(var i:Number=0;ichkx){ //var targetx:Number=xchklist[i]; var targetxidx:Number=i; i=xnum;//loopを終了させる } } //y座標の変更位置確認 var chky:Number=myclist[idx].currenty+centery; for(var i:Number=0;ichky){//行数文だけチェックする //var targety:Number=ychklist[i]; var targetyidx:Number=i/xnum; i=ychklist.length;//loopを終了させる } } var chgtgtidx:Number=targetyidx*xnum+targetxidx;//入れ替えターゲットのインデックス確定 if(chgtgtidx>=myclist.length){//末尾の余白部分にはドロップさせない chgtgtidx=myclist.length-1; } var targetx:Number=xchklist[chgtgtidx];//移動位置確定 var targety:Number=ychklist[chgtgtidx]; //並び替え処理 var tgtc:Column=myclist[idx];//入れ替え用にキープ if(chgtgtidx>idx){//前に詰める for(var i:Number=idx+1;i<=chgtgtidx;i++){//実際に動かす myclist[i].moveColumn(myclist[i-1].startx,myclist[i-1].starty); } for(var i:Number=idx+1;i<=chgtgtidx;i++){//リストの並び、start位置を変更する myclist[i-1]=myclist[i]; myclist[i-1].startx=myclist[i-1].currentx; myclist[i-1].starty=myclist[i-1].currenty; } }else if(chgtgtidx=chgtgtidx;i--){ myclist[i].moveColumn(myclist[i+1].startx,myclist[i+1].starty); } for(var i:Number=idx-1;i>=chgtgtidx;i--){//リストの並び、start位置を変更する myclist[i+1]=myclist[i]; myclist[i+1].startx=myclist[i+1].currentx; myclist[i+1].starty=myclist[i+1].currenty; } } tgtc.moveColumn(targetx,targety);//実際の移動処理 myclist[chgtgtidx]=tgtc;//リストの並び、start位置を変更する myclist[chgtgtidx].startx=tgtc.currentx; myclist[chgtgtidx].starty=tgtc.currenty; for(var i:Number=0;i