Компонент выходит из другого компонента - PullRequest
1 голос
/ 31 августа 2010

Если я перетаскиваю textInput из компонента и помещаю его ближе к концу другого компонента, textInput выходит за пределы dropZone.

Есть идеи, как решить эту проблему?

спасибо

редактирование:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" width="150" height="500" xmlns:components="components.*" >

        protected function textInput_mouseDownHandler(event:MouseEvent):void
      {

      var dragI:Label=event.currentTarget as Label;
      var ds:DragSource=new DragSource();
      ds.addData(dragI,"TextInput");
      DragManager.doDrag(dragI,ds,event);
      }
 <s:BorderContainer width="100%" height="100%">
    <s:layout>
      <s:VerticalLayout gap="10"/>
    </s:layout>  
<s:Label text="TextInput"   mouseMove="textInput_mouseDownHandler(event )" dragComplete="dragCompleteHandler(event)" />

 </s:BorderContainer>

и компонент dropZone:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" height="500" width="700" xmlns:components="components.*" >
  <fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
  </fx:Declarations>

 protected function dragDropHandler(event:DragEvent):void
      {

        if (event.dragSource.hasFormat("TextInput")){

          var draggedText:TextInput=new TextInput();
          draggedText.x = event.currentTarget.mouseX;
          draggedText.y = event.currentTarget.mouseY;
          event.currentTarget.addElement(draggedText);
}
}
   protected function dragEnterHandler(event:DragEvent):void
      {
        if(event.dragSource.hasFormat("TextInput")  )
        {
          var dropTarget:BorderContainer= event.currentTarget as BorderContainer;
          DragManager.acceptDragDrop(dropTarget);   
}
}

 <s:BorderContainer width="100%" height="100%" dragDrop="dragDropHandler(event)"
                     dragEnter="dragEnterHandler(event)"/>
</s:Group>

Ответы [ 2 ]

0 голосов
/ 13 сентября 2010

В вашем объекте макета установите для clipAndEnableScrolling значение true. Это заставит макет обрезать весь контент, находящийся за пределами контейнера. Если вам нужна прокрутка, то вам все равно нужно свернуть свою группу в скроллер.

<s:BorderContainer width="100%" height="100%"> 
    <s:layout> 
      <s:VerticalLayout gap="10" clipAndEnableScrolling="true"/> 
    </s:layout>   
<s:Label text="TextInput"   mouseMove="textInput_mouseDownHandler(event )" dragComplete="dragCompleteHandler(event)" /> 

 </s:BorderContainer> 

clipAndEnableScrolling - это свойство всех макетов, VerticalLayout, HorizontalLayout и BasicLayout и многие другие.

...