застрял на этом пару дней. Я пытаюсь реализовать перетаскивание между списками с помощью обработчиков событий клавиатуры. Все плохо. Это то, что у меня есть атм -Flex - перетаскивание элементов списка с использованием клавиатуры
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>
Сопротивления, казалось бы, инициализация, но это не дает мне упасть на целевой список (с помощью мыши в настоящее время для целей тестирования). Используя отладчик - переменные после того, как обработчик клавиатуры вызывается следующим образом:
dragInitatior - mx.controls.listClasses.ListItemRenderer (@ 90c83c1) DS - mx.core.DragSource (@ 8fe5f01)
Любой идеи?