2016-08-12 7 views
-1

застрял на этом пару дней. Я пытаюсь реализовать перетаскивание между списками с помощью обработчиков событий клавиатуры. Все плохо. Это то, что у меня есть атм -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)

Любой идеи?

ответ

0

Мне удалось это сделать и получить перетаскивание началось путем моделирования события MouseDown в моем элементе списка.

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 с помощью клавиатуры на моем целевом контейнере.