Mensagem: Erro drag and drop Eclipse

Erro drag and drop Eclipse

  • 14 de Maio de 2015

    Fernando Augusto Poltronieri

    Bom dia, estou tentando efetuar o drag and drop no eclipse para fazer conexão com banco pelo blazeds de uma imagem dentro de uma canvas que seria um tabuleiro e está dando erro:
    RangeError:Error#2006:The supplied index is out of bounds.
     at flash.display:DisplayObjectContainer/addChildAt()
     at mx.core:Container/addChildAt()[E:\dev\3.0x\frameworks\projects\framework\src\mx\core\Container.as:2206]
     at mx.core:Container/addChild()[E:\dev\3.0x\frameworks\projects\framework\src\mx\core\Container.as:2140]
     at tabuleiro/handleDragDrop()[D:\Programação\Eclipse\workspace\tabuleiro\flex_src\scripts\dragDrop.as:156]
     at tabuleiro/__tabuleiro_DragDrop()[D:\Programação\Eclipse\workspace\tabuleiro\flex_src\tabuleiro.mxml:6]
     at flash.events::EventDispatcher/dispatchEventFunction()
     at flash.events::EventDispatcher/dispatchEvent()
     at mx.cre::UiComponent/dispatchEvent()[E:\dev\3.0x\frameworks\projects\framework\src\mx\core\UIComponent.as:9051]
     at mx.managers.dragClasses::DragProxy/mouseUpHandler()[E:\dev\3.0x\frameworks\projects\framework\src\mx\managers\dragClasses\DragProxy.as:500]
    Obs: no flexBuilder 3 funciona perfeitamente.

    Minhas chamadas no arquivo mxml:
    <mx:Canvas id="canvasTabuleiro" width="628" height="702" backgroundColor="#FFFFFF" borderStyle="solid" 
     borderColor="#000000" dragDrop="{handleDragDrop(event)}" dragEnter="{handleDragEnter(event)}">
     <mx:Image id="tabuleiro" 
     source="@Embed(source='assets/tabuleiro.jpg')" width="626" height="391"/>
     <mx:Image id="imagem1" x="10" y="399" source="@Embed(source='assets/peca.jpg')" mouseDown="handleMouseDown(event)"/>
    Meu arquivo dragDrop.as
    import flash.events.MouseEvent;
    import mx.controls.Image;
    import mx.core.DragSource;
    import mx.core.IUIComponent;
    import mx.core.UIComponent;
    import mx.events.DragEvent;
    import mx.managers.DragManager;
    
    private function handleMouseDown( event:MouseEvent ):void
    {
     if ( event.currentTarget is IUIComponent )
     {
     var dragChild:UIComponent = UIComponent( event.currentTarget );
    
     var dragSource:DragSource = new DragSource();
     dragSource.addData( dragChild.parent, 'dragParent' );
     dragSource.addData( dragChild, 'dragChild' );
    
     var proxy:UIComponent = UIComponent( event.currentTarget );
    
     var bitmapData:BitmapData = new BitmapData( proxy.width, proxy.height );
     bitmapData.draw( proxy );
    
     var bitmap:Bitmap = new Bitmap( bitmapData );
    
     var image:Image = new Image();
     image.source = bitmap;
    
     DragManager.doDrag( dragChild, dragSource, event, image );
     }
    }
    
    private function handleDragEnter( event:DragEvent ):void
    {
     if ( event.dragSource.hasFormat('dragChild') && event.dragSource.hasFormat('dragParent') )
     {
     if ( event.currentTarget is UIComponent )
     {
     // Needed to give a visual indicator that the drag|drop is good.
     var dropTarget:UIComponent = UIComponent( event.currentTarget );
    
     var dragSource:UIComponent = event.dragSource.dataForFormat( 'dragParent' ) as UIComponent;
    
     // We are in a valid drag target or 'to' container
     DragManager.acceptDragDrop( dropTarget );
     DragManager.showFeedback( DragManager.COPY );
     }
     }
    }
    
    private function handleDragDrop( event:DragEvent ):void
    {
     if ( event.currentTarget is UIComponent )
     {
     var dropTarget:UIComponent = UIComponent( event.currentTarget );
    
     var dragSource:UIComponent = event.dragSource.dataForFormat( 'dragParent' ) as UIComponent;
    
     var child:UIComponent = event.dragSource.dataForFormat( 'dragChild' ) as UIComponent;
    
     Image(event.dragInitiator).x = Canvas(event.currentTarget).mouseX;
     Image(event.dragInitiator).y = Canvas(event.currentTarget).mouseY;
     //dragSource.removeChild( child );
     dropTarget.addChild( child );
     }
    }
    Bom, como funcionou no FlexBuilder, não imagino o que fazer para corrigir no Eclipse. Agradeço desde já.
    Na categoria:
    Faça login para comentar
    • 14 de Maio de 2015

      Eduardo Kraus

      "The supplied index is out of bounds." diz que estas tentando adicionar em um elemento que Não existe.

      na linha:
      var dropTarget:UIComponent = UIComponent( event.currentTarget );
      Esta linha diz: converta event.currentTarget para UIComponent

      Faça assim:
      var dropTarget:UIComponent = event.currentTarget as UIComponent;
      Esta linha diz: apenas vamos supor que o event.currentTarget é UIComponent
      Faça login para comentar
      • 14 de Maio de 2015

        Fernando Augusto Poltronieri

        Ok, farei a alteração quando estiver em casa e posto o resultado, mas sabe dizer porque no Flex Builder roda perfeitamente?
        Faça login para comentar
        • 14 de Maio de 2015

          Fernando Augusto Poltronieri

          O erro não é mais apresentado Eduardo, porém o quando a imagem é movida ela simplesmente desaparece.
          Faça login para comentar
        • 14 de Maio de 2015

          Eduardo Kraus

          Isso acontece porque o Flex4 mudou a arquitetura. E mudou coisas pra caramba.
          Faça login para comentar

Logo Eduardo Kraus

Nossa missão é trazer educação de qualidade, para todas as pessoas, aonde quer que elas estejam para que elas possam alcançar seus sonhos profissionais.