flex- Drag and drop - PullRequest
       7

flex- Drag and drop

2 голосов
/ 14 апреля 2011

Я пытаюсь перетащить объект через SkinnableContainer - я сталкиваюсь с очень странной проблемой

Падение происходит только в нескольких местах - в других местах оно просто показывает знак "X", а при падении возвращается в исходное положение. Я использовал очень стандартные команды ... от функции 2 до функции 3, вызов происходит очень редко, как видно из операторов трассировки - есть какие-нибудь указания, почему это происходит?

Я добавил следующий код в SkinnableContainer: dragEnter="dragEnterHandler(event);" dragDrop="dragDropHandler(event);

(1)

private function mouseMoveHandler(event:MouseEvent):void    
{
  var dragInitiator:Image = Image(event.currentTarget);   
  var ds:DragSource = new DragSource();    
  ds.addData(dragInitiator,"img"); //made change here    
  DragManager.doDrag(dragInitiator, ds, event);
}

(2)

private function dragEnterHandler(event:DragEvent):void {

if (event.dragSource.hasFormat("img"))
{
   trace("came here"); //comes here for each mouse move     
   DragManager.acceptDragDrop(SkinnableContainer(event.currentTarget));
}

(3)

private function dragDropHandler(event:DragEvent):void {    
trace("in drag drop handler"); //doesn't come here for most places

1 Ответ

2 голосов
/ 15 апреля 2011

Согласно справке Using Flex 4 :

Чтобы использовать контейнер в качестве цели отбрасывания, необходимо использовать свойство backgroundColor контейнера, чтобы установить цвет,В противном случае цвет фона контейнера является прозрачным, и диспетчер перетаскивания не может обнаружить, что указатель мыши находится на возможной цели перетаскивания.

В следующем примере они используют mxконтейнер (Canvas), но я проверил ссылку AS3, и spark.components.SkinnableContainer имеет стиль backgroundColor.

Я сам не пробовал, поэтому, пожалуйста, подтвердите,это проблема.Из вашего описания, что только определенные части контейнера регистрируют событие dragEnter, это выглядит как соображение, которое приведет к таким эффектам.

...