Actionscript 3 Flex-使用键盘拖放列表项
这件事已经拖了好几天了。我正在尝试使用键盘事件处理程序实现列表之间的拖放。事情进展不顺利。这就是我的atm机-Actionscript 3 Flex-使用键盘拖放列表项,actionscript-3,apache-flex,actionscript,keyboard,drag,Actionscript 3,Apache Flex,Actionscript,Keyboard,Drag,这件事已经拖了好几天了。我正在尝试使用键盘事件处理程序实现列表之间的拖放。事情进展不顺利。这就是我的atm机- private function keyboardHandler(event:KeyboardEvent):void { if (event.keyCode == Keyboard.SPACE){ var list : List = List(event.currentTarget);
private function keyboardHandler(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.SPACE){
var list : List = List(event.currentTarget);
var dragInitiator:UIComponent = UIComponent(list.indexToItemRenderer(list.selectedIndex));
var ds:DragSource = new DragSource();
ds.addData(list.selectedItem, "listItem");
DragManager.doDrag(dragInitiator, ds, new MouseEvent(MouseEvent.CLICK));
}
}
<s:Panel title="EXAMPLE"
width="75%" height="75%"
horizontalCenter="0" verticalCenter="0">
<s:VGroup left="10" right="10" top="10" bottom="10">
<s:Label text="DRAG" />
<mx:List id="dragSource" width="100%" color="blue"
keyDown="keyboardHandler(event)"
change="selectedListItem = List(event.currentTarget).selectedItem"
dataProvider="{mystates.state}"/>
<s:Label text="DROP" />
<mx:List id="dropSource" width="100%" color="blue"
keyDown="keyboardHandler(event)"
dataProvider="{mystates.state}" dropEnabled="true"/>
</s:VGroup>
</s:Panel>
私有函数keyboardHandler(事件:KeyboardEvent):无效{
if(event.keyCode==Keyboard.SPACE){
变量列表:列表=列表(event.currentTarget);
变量dragInitiator:UIComponent=UIComponent(list.indexToItemRenderer(list.selectedIndex));
var ds:DragSource=new DragSource();
ds.addData(list.selectedItem,“listItem”);
DragManager.doDrag(dragInitiator,ds,new MouseEvent(MouseEvent.CLICK));
}
}
拖动似乎正在初始化,但它不允许我将其放在目标列表上(目前使用鼠标进行测试)。使用调试器-激发键盘处理程序后的变量如下所示:
绘图工具-mx.controls.listClasses.ListItemRenderer(@90c83c1)
ds-mx.core.DragSource(@8fe5f01)
有什么想法吗?我已经设法把它捏造出来,并通过在我的列表项上模拟鼠标下降事件来启动拖动
private function customDrag(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.SPACE){
var selectedItem:IListItemRenderer = myList.indexToItemRenderer(myList.selectedIndex);
selectedItem.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
}
}
不过,通过我的目标容器上的键盘执行dragDrop事件的运气不太好