Skip to content

Instantly share code, notes, and snippets.

@CaglarGonul
Created March 15, 2013 23:07
Show Gist options
  • Save CaglarGonul/5173886 to your computer and use it in GitHub Desktop.
Save CaglarGonul/5173886 to your computer and use it in GitHub Desktop.
Fluct grid arrange items
private function arrangeItems():void {
var itemSelected:FluctGridItem = _dictionary[_currentItem];
var cellToBeDraggedOn:Point = getCellCoord(_currentItem.x, _currentItem.y);
var intialCol:int = itemSelected.col;
var intialRow:int = itemSelected.row;
var colToBeDraggedOn:int = cellToBeDraggedOn.x;
var rowToBeDraggedOn:int = cellToBeDraggedOn.y;
if (colToBeDraggedOn == itemSelected.col && rowToBeDraggedOn == itemSelected.row) {
return;
}
var hMove:int = colToBeDraggedOn - itemSelected.col;
var vMove:int = rowToBeDraggedOn - itemSelected.row;
var i:int;
var itemTemp:FluctGridItem;
var move:Array = [];
if (!isCellOcuppied(rowToBeDraggedOn, colToBeDraggedOn)) {
itemTemp = _index[rowToBeDraggedOn][colToBeDraggedOn];
itemSelected.row = rowToBeDraggedOn;
itemSelected.col = colToBeDraggedOn;
snapToGrid(itemSelected);
_index[rowToBeDraggedOn][colToBeDraggedOn] = itemSelected;
insertBlankItemAt(intialRow, intialCol);
return;
}
if (hMove < 0) {
for (i = itemSelected.col - 1; i >= itemSelected.col + hMove; i--) {
if (_index[itemSelected.row][i]) {
itemTemp = _index[itemSelected.row][i];
itemTemp.col++;
_index[itemTemp.row][itemTemp.col] = itemTemp;
move.push(itemTemp);
}
}
} else {
for (i = itemSelected.col + 1; i <= itemSelected.col + hMove; i++) {
if (_index[itemSelected.row][i]) {
itemTemp = _index[itemSelected.row][i];
itemTemp.col--;
_index[itemTemp.row][itemTemp.col] = itemTemp;
move.push(itemTemp);
}
}
}
if (vMove < 0) {
for (i = itemSelected.row - 1; i >= itemSelected.row + vMove; i--) {
if (_index[i][itemSelected.col + hMove]) {
itemTemp = _index[i][itemSelected.col + hMove];
itemTemp.row++;
_index[itemTemp.row][itemTemp.col] = itemTemp;
move.push(itemTemp);
}
}
} else {
for (i = itemSelected.row + 1; i <= itemSelected.row + vMove; i++) {
if (_index[i][itemSelected.col + hMove]) {
itemTemp = _index[i][itemSelected.col + hMove];
itemTemp.row--;
_index[itemTemp.row][itemTemp.col] = itemTemp;
move.push(itemTemp);
}
}
}
for (i = 0; i < move.length; i++) {
snapToGrid(move[i]);
}
itemSelected.row = rowToBeDraggedOn;
itemSelected.col = colToBeDraggedOn;
_index[rowToBeDraggedOn][colToBeDraggedOn] = itemSelected;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment