そのため、キーボードで上下のスピナークリックをトリガーするように求められましたが、イベントをディスパッチする場所が見つかりません...
これは私が試したことです:
var item:Object=spinner.skin;
item.incrementButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
item.incrementButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP));
item.incrementButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
item.decrementButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_DOWN));
item.decrementButton.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_UP));
item.decrementButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
何か案は?
編集:データグリッドの行スワッピングのショートカットを作成する必要がありました。
if(e.keyCode==Keyboard.NUMPAD_ADD){
spnOrder.value++;
spnOrder.incrementButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
else if(e.keyCode==Keyboard.NUMPAD_SUBTRACT){
spnOrder.value--;
spnOrder.decrementButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
スピナーには、データグリッドの行をスピナーの結果の値と交換する汎用ハンドラーがあり、クリックをディスパッチするのが最もクリーンなソリューションのように聞こえました。
編集2:
クリック ハンドラー:
private function spnOrder_clickHandler(e:MouseEvent):void{
var toIndex:int=spnOrder.value;
var index:int=grid.selectedIndex;
if(toIndex>-1 && toIndex<list.length && index>-1 && toIndex!=index){
if(toIndex<index)
list.addItemAt(list.removeItemAt(index-1),index)
else
list.addItemAt(list.removeItemAt(index+1),index);
grid.setFocus();
grid.setSelectedIndex(toIndex);
}
else{
grid.setFocus();
spnOrder.value=index;
}
}
スピナー:
<s:Spinner
id="spnOrder"
value="{grid.selectedIndex}"
skinClass="skins.SpinnerInvertedSkin"
click="spnOrder_clickHandler(event)" />