Как предотвратить попадание элемента в один TileList из другого с помощью Flex? - PullRequest
2 голосов
/ 13 февраля 2009

Я бы хотел, чтобы пользователь не перетаскивал определенные элементы из одного TileList в другой. Возможность их добавления в TileList должна определяться на основе данных, связанных с элементом.

Чтобы показать, что элемент нельзя перетащить в TileList, я хотел бы показать обычный белый крестик в красном круге рядом с курсором. Если попытка удаления была сделана, когда было определено, что удаление не должно произойти, я хотел бы показать предупреждающее сообщение, объясняющее, почему этот элемент не может быть удален.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2009

Эта статья должна вам помочь. Пример в статье кажется именно тем, что вы хотите.

http://butterfliesandbugs.wordpress.com/2007/10/10/cancelling-a-drag-action-in-list-components/

0 голосов
/ 07 октября 2015

Вам нужно запретить действие по умолчанию как для события dragDrop (чтобы остановить его добавление в новый список), так и для события dragComplete (чтобы предотвратить его удаление из старого списка). Вот пример, позволяющий перемещать элементы внутри списка, но не между списками:

private var preventMove:Boolean = false;
private function onDragDrop(event: DragEvent): void {
    preventMove = (event.dragInitiator != event.target);
    if (preventMove)
        event.preventDefault();
}

private function onDragComplete(event: DragEvent): void {
    if (preventMove) {
        event.preventDefault();
    }
}

Вы можете использовать любые критерии вместо проверки dragInitiator для цели dragDrop. Наряду с вызовом warnDefault для dragComplete, вы можете вызвать ваше сообщение об ошибке.

Где у вас есть два списка (или TileLists или что-то еще):

<s:List dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)"
        dragEnabled="true" dropEnabled="true"  dragMoveEnabled="true">
</s:List>
<s:List dragDrop="onDragDrop(event)" dragComplete="onDragComplete(event)"
        dragEnabled="true" dropEnabled="true"  dragMoveEnabled="true">
</s:List>

Если вам не нужно перетаскивать объекты в одном и том же списке или вы перетаскиваете только одно направление, это может быть проще, если не включить все в обоих списках.

Статья, на которую ссылается Chetan Sastry, устарела и содержит неработающие ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...