У меня есть сетка данных, по которой я хочу, чтобы пользователь сортировал строки. Чтобы было понятно, что это сортируемо, я использую несколько пользовательских курсоров. Но у меня возникает проблема, когда я на самом деле перетаскиваю элемент.
вот псевдо-демонстрация проблемы
Приложение = нормальный курсор // отлично
Rollover datagrid = курсор в виде открытой руки // пока хорошо
mousedown на datagrid = курсор закрытой руки // хорошо
перетаскивание элемента вокруг = курсор закрытой руки // переключается обратно на обычный курсор (если я перемещаю его очень быстро, я на мгновение вижу свой пользовательский курсор)
наведите курсор мыши на datadrid = курсор открытой руки // не уверен, после того, как я уронил его, он возвращается к открытой руке, но если я нажимаю вниз, не двигаюсь и не поднимаю мышь, у меня закрытая рука
развертывание datagrid = нормальный курсор // хорошо
код данных:
<mx:DataGrid id="sectQuestionsDG" x="10" y="204" width="558" height="277" headerHeight="0" selectable="{editMode}"
dragMoveEnabled="{editMode}" dragEnabled="{editMode}" dropEnabled="{editMode}"
dragDrop="sectQuestReOrder(event);" rollOver="over();" mouseDown="down();" mouseUp="up();" rollOut="out();"/>
функции:
public function over():void{
CursorManager.setCursor(grabCursor,CursorManagerPriority.LOW,0,0);
}
public function down():void{
CursorManager.setCursor(grabbingCursor,CursorManagerPriority.HIGH,0,0);
}
public function up():void{
CursorManager.setCursor(grabCursor,CursorManagerPriority.LOW,0,0);
}
public function out():void{
CursorManager.removeAllCursors();
}
Редактировать 17.12.09:
Я немного продвинулся, сейчас делаю это на rollOver
var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration("DragManager");
styleSheet.setStyle("moveCursor", grabbingCursor);
CursorManager.setCursor(grabCursor,CursorManagerPriority.LOW);
Это дает мне правильный ролловер и правильное перетаскивание, но если я попытаюсь добавить
функция, чтобы свернуть это снова облажается, так что теперь я застрял с grabCursor. Это
Похоже, когда я установил rollOut на dataGrid, он запускается для каждой строки, то же самое
с mouseOut, есть ли способ избежать этого?
Редактировать 21.12.09:
Это подтвержденная вещь, которая выкатывает / наводит мышь на огонь для каждого элемента в сетке данных. Решение, которое мне нужно, состоит в том, как предотвратить это и запустить его только тогда, когда пользователь отключается от сетки данных в целом. Мне нужно прогнуться, чтобы увидеть лес, а не деревья.
PS. свиток срабатывает только при каждом перетаскивании. мышка срабатывает на каждый предмет, независимо от того,
РЕДАКТИРОВАТЬ 21.12.09, Конец дня:
Мне удалось ответить на мой собственный вопрос, поэтому мой представитель за вознаграждение был потерян для меня :-( В любом случае, так как мой ответ решает мою проблему, я назначу награду любому, кто может ответить на это. Мое решение использует AS для удаления rollOut / rollOver, пока пользователь перетаскивает. В dataGrid. Как можно получить тот же результат, не удаляя rollOut / rollOver (чтобы rollOut не срабатывал для каждого элемента, когда вы перетаскивали на него другой элемент)?