Actionscript 3 Flex-使用键盘拖放列表项

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);

这件事已经拖了好几天了。我正在尝试使用键盘事件处理程序实现列表之间的拖放。事情进展不顺利。这就是我的atm机-

        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事件的运气不太好