AS3, прокрутка содержимого путем перетаскивания содержимогоКак на телефоне.нет полосы прокрутки.вспышка - PullRequest
0 голосов
/ 21 февраля 2011

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

У кого-нибудь есть какие-либо советы или URL для меня, чтобы проверить?

спасибо cp

Ответы [ 3 ]

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

На самом деле вы также можете попытаться использовать startDrag здесь.

Startdrag имеет два необязательных параметра: lockcenter (для центрирования видеоклипа на мышь после перетаскивания), логическое значение и границы, чтобы определить область, которую выможно перетащить его в прямоугольник.

Так что, если вы хотите прокрутить вертикально, используйте прямоугольник соответственно:

movie.startDrag(false, new Rectangle(m.x, -10000, 0, 2 * 10000));

Здесь я написал -10000 в качестве координаты y прямоугольника и 2* 10000 для его высоты.Это сделано для того, чтобы вы могли перетащить его, при необходимости измените эти числа.

Небольшой код для перетаскивания выглядит следующим образом:

movie.addEventListener("mouseDown", md);

function md(evt:*):void
{
    movie.startDrag(false, new Rectangle(m.x, -10000, 0, 2 * 10000));
    stage.addEventListener("mouseUp", mu);
}

function mu(evt:*):void
{
    movie.stopDrag();
    stage.removeEventListener("mouseUp", mu);
}

Возможно, это соответствует вашим потребностям.

1 голос
/ 21 февраля 2011

идея пули:

  • при mouse_down запустить переключатель
  • Выйти из переключателя mouse_up
  • если переключатель включен, заставьте mouse_move обратить внимание на границы перетаскивания
  • если мышь находится выше, вправо, влево или ниже границ, когда переключатель имеет значение true - не позволяйте мыши больше двигаться, но заставьте область прокрутки двигаться вверх / вниз или влево / вправо .

надеюсь, это поможет / имеет смысл.

0 голосов
/ 21 февраля 2011

Вот кое-что, с чего можно начать. Я сейчас работаю над границами. Несколько минут на это. Это предполагает, что у вас есть мувиклип на сцене, в моем примере это красный прямоугольник (ваше предполагаемое содержимое) с именем экземпляра «box». Эта концепция может быть расширена для прокрутки содержимого в контейнере, если хотите.

РЕДАКТИРОВАТЬ имеют некоторые неожиданные поведения, когда коробка застревает на границах. Эта идея еще не совсем верна, но я думаю, что она на правильном пути. Я все еще возился с этим. :)

stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, calculatePosition);

var scrolling:Boolean;
var scrollMax = this.stage.stageHeight;

function onDown(evt:MouseEvent = null):void
{
    scrolling = true;
}

function onUp(evt:MouseEvent = null):void
{
    scrolling = false;
}

function calculatePosition(evt:Event)
{
    if(scrolling)
    {
        var percent = getPercentageFromNumber(stage.mouseY, scrollMax, 0);

        var pos = getNumberFromPercentage(percent, scrollMax, 0);

        if(box.y + box.height < scrollMax && box.y > 0)
        {
            box.y = pos;
        }
        else
        {
            onUp();
        }
    }
}

function getPercentageFromNumber(val:Number, max:Number, min:Number = 0):Number
{
    var percent:Number = (val - min) / (max - min) * 100;

    return percent;
}

function getNumberFromPercentage(perc:Number, max:Number, min:Number = 0):Number
{
    var absolute:Number = (perc * (max - min) / 100) + min;

    return absolute;
}
...