Actionscript 3 AdobeFlex中类似于jQueryUI的可排序网格
我需要类似于Adobe Flex的东西。有没有快速解决方案?这里是flex中类似的可排序网格(3X3)示例:Actionscript 3 AdobeFlex中类似于jQueryUI的可排序网格,actionscript-3,flash,apache-flex,flex4,flash-builder,Actionscript 3,Flash,Apache Flex,Flex4,Flash Builder,我需要类似于Adobe Flex的东西。有没有快速解决方案?这里是flex中类似的可排序网格(3X3)示例: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" horizontalAlign="center" height="100%" wi
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
verticalAlign="middle" horizontalAlign="center"
height="100%" width="100%">
<mx:Script>
<![CDATA[
import mx.containers.GridItem;
import mx.controls.Button;
import mx.core.DragSource;
import mx.events.*;
import mx.managers.DragManager;
private var sourceRow:int;
private var sourceCol:int;
private var destinationRow:int;
private var destinationCol:int;
private var sourceIndex:int;
private var destinationIndex:int;
private function dragInit(event:MouseEvent):void
{
if(event.buttonDown && !DragManager.isDragging)
{
var button:Button = event.currentTarget as Button;
var dragSource:DragSource = new DragSource();
dragSource.addData(button, 'button');
DragManager.doDrag(button, dragSource, event);
sourceRow = (event.currentTarget.parent.parent.parent as Grid).getChildIndex(event.currentTarget.parent.parent);
sourceCol = (event.currentTarget.parent.parent as GridRow).getChildIndex(event.currentTarget.parent);
sourceIndex = sourceRow * 3 + sourceCol;
}
}
private function dragEnter(event:DragEvent): void
{
var target:GridItem = event.currentTarget as GridItem;
if (event.dragSource.hasFormat('button') )
{
DragManager.acceptDragDrop(target);
DragManager.showFeedback(DragManager.MOVE);
trace("Drag Enter....");
destinationRow = (target.parent.parent as Grid).getChildIndex(target.parent);
destinationCol = (target.parent as GridRow).getChildIndex(target);
destinationIndex = destinationRow * 3 + destinationCol;
}
if(destinationIndex > sourceIndex)
{
var targetGridItem:GridItem = new GridItem();
for(var i = sourceIndex; i< destinationIndex; i++)
{
targetGridItem = getGridItemByIndex(i);
targetGridItem.addChildAt(getGridItemByIndex(i+1).getChildAt(0),0);
}
}
else if(destinationIndex < sourceIndex)
{
var targetGridItem:GridItem = new GridItem();
for(var i = sourceIndex; i > destinationIndex; i--)
{
targetGridItem = getGridItemByIndex(i);
targetGridItem.addChildAt(getGridItemByIndex(i-1).getChildAt(0),0);
}
}
sourceIndex = destinationIndex;
}
private function getGridItemByIndex(i:int):GridItem
{
var row:int = i/3;
var col:int = i%3;
return (grid.getChildAt(row) as GridRow).getChildAt(col) as GridItem;
}
private function dragDrop(event:DragEvent): void
{
var target:GridItem = event.currentTarget as GridItem;
var button:Button = event.dragSource.dataForFormat('button') as Button;
target.addChild(button);
}
]]>
</mx:Script>
<mx:Grid id="grid" >
<mx:GridRow width="100%" height="100%">
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
backgroundColor="black" verticalAlign="middle" paddingLeft="4"
verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:Button label="A" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
verticalScrollPolicy="off" horizontalScrollPolicy="off"
backgroundColor="red" paddingLeft="4" verticalAlign="middle">
<mx:Button label="B" width="80" height="80" mouseMove="dragInit(event)" />
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
verticalScrollPolicy="off" horizontalScrollPolicy="off"
backgroundColor="yellow" paddingLeft="4" verticalAlign="middle">
<mx:Button label="C" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow width="100%" height="100%">
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="blue" paddingLeft="4" verticalAlign="middle">
<mx:Button label="D" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="0xee82ee" paddingLeft="4" verticalAlign="middle">
<mx:Button label="E" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="purple" paddingLeft="4" verticalAlign="middle">
<mx:Button label="F" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow width="100%" height="100%">
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="green" paddingLeft="4" verticalAlign="middle">
<mx:Button label="G" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="0x87ceeb" paddingLeft="4" verticalAlign="middle">
<mx:Button label="H" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
<mx:GridItem width="88" height="88" dragEnter="dragEnter(event)" dragDrop="dragDrop(event)"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
backgroundColor="navy" paddingLeft="4" verticalAlign="middle">
<mx:Button label="I" width="80" height="80" mouseMove="dragInit(event)"/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</mx:Application>
源索引)
{
var targetGridItem:GridItem=new GridItem();
对于(var i=sourceIndex;idestinationIndex;i--)
{
targetGridItem=getGridItemByIndex(i);
targetGridItem.addChildAt(getGridItemByIndex(i-1).getChildAt(0),0);
}
}
sourceIndex=destinationIndex;
}
私有函数getGridItemByIndex(i:int):GridItem
{
变量行:int=i/3;
变量列:int=i%3;
返回(grid.getChildAt(row)作为GridRow),getChildAt(col)作为GridItem;
}
专用函数dragDrop(事件:DragEvent):无效
{
变量目标:GridItem=event.currentTarget作为GridItem;
var按钮:按钮=event.dragSource.dataForFormat('button')作为按钮;
target.addChild(按钮);
}
]]>