AS3 — Перетаскивание элементов в пределах области прокрутки

#actionscript-3 #components #scrollpane

#actionscript-3 #Компоненты #область прокрутки

Вопрос:

Я использую компонент Flash ScrollPane для хранения вертикальной стопки видеороликов. Я реализовал функциональность, позволяющую пользователю перетаскивать эти видеоролики вверх и вниз по вертикальному стеку, чтобы они могли изменять порядок. Моя проблема возникает, когда пользователь перетаскивает видеоролик в нижнюю часть области прокрутки, я хочу, чтобы содержимое прокручивалось, чтобы пользователь мог опускать перетаскиваемый видеоролик ниже элементов, которые не помещаются в видимую область области прокрутки.

Я попытался автоматически прокручивать панель, увеличивая положение verticalScrollPosition, когда перетаскиваемый видеоролик находится в нижней части панели, но это не работает, поскольку перетаскиваемый видеоролик является частью содержимого области прокрутки и перемещается вместе с остальным содержимым. Перетаскиваемый видеоролик перемещается вверх вместе с остальным содержимым и больше не находится под пользовательским курсором:

         private function onDragged (e : Event) : void {
          var draggedY : Number = ComponentHolder(e.currentTarget).y;           

          if(draggedY > this.height - 30 amp;amp; draggedY > this.height - 25){
            verticalScrollPosition   ;
            //e.currentTarget.y   ;
        }   
  

Возможно, это не лучшее описание моей проблемы, но, надеюсь, вы поняли идею. Если вам нужны какие-либо разъяснения, пожалуйста, дайте мне знать. Я думаю, что мне, возможно, нужно исключить перетаскиваемый видеоролик из «прокручиваемого» содержимого панели, но я не уверен, как это сделать.

Любая помощь приветствуется.

Ответ №1:

Если я вас правильно понял, я могу посоветовать вам два решения:

  1. Прокручивайте панель при вращении колесика мыши вместо прокрутки, когда пользователь перетаскивает видеоклип вниз.

  2. Удалите видеоклип с панели после того, как начнете его перетаскивать.