Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Scroll movieclip (http://www.flasher.ru/forum/showthread.php?t=214731)

whitefang 14.11.2017 23:15

Scroll movieclip
 
Подскажите готовый класс для вертикального скроллинга мувика. Сам написал, но не очень. Как инерционный сделать не знаю. Стандартного тоже вроде нет

ZergMaster 15.11.2017 02:46

whitefang
инерционный - это как? А если через Tweenlite какой-нибудь?

whitefang 15.11.2017 06:57

Цитата:

Сообщение от ZergMaster (Сообщение 1202944)
whitefang
инерционный - это как?

медленно проводишь пальцем-медленно крутится, резко- быстро крутится

caseyryan 15.11.2017 07:42

Цитата:

Как инерционный сделать не знаю.
Общий принцип такой. По ENTER_FRAME или по таймеру фиксируешь положение своего мувика, а в следующем кадре замеряешь разницу текущего и прошлого положения. Это и будет скорость, с которой он должен двигаться после отпускания. А дальше, для затухания лучше всего использовать какой-то готовый твинер. Мне лично, больше всех нравится TweenMax.
В общем, примерно как-то так:
Код AS3:

var velocity:Point = new Point();
var prevPos:Point = new Point();
var isMouseDown:Boolean = false;
 
function onMouseDown(e:MouseEvent):void {
    isMouseDown = true;
}
function onMouseUp(e:MouseEvent):void {
    isMouseDown = false;
    velocity.x = clip.x - prevPos.x; // замеряешь скорость
    velocity.y = clip.y - prevPos.y;
    // скорость будет затухать и клип будет двигаться медленнее в течение полсекунды, пока не остановится
    TweenMax.to(velocity, .5, {
      x: 0,
      y: 0,
      onUpdate: function():void {
          clip.x += velocity.x;
          clip.y += velocity.y;
      }
    });
}
function onEnterFrame(e:Event):void {
    if (isMouseDown) {
        // пока держишь мышь, фиксируй перемещение клипа
        prevPos.x = clip.x;
        prevPos.y = clip.y;
    }
 
}

Но в принципе, для линейного затухания ты можешь обойтись и без твина. Просто в том же энтер фрейм обработчике отнимай какое-то число от скорости, например 0.02, пока скорость не станет <= 0. Дальше ставишь ее ровно в 0 и прекращаешь вычисления

Zebestov 15.11.2017 13:28

Есть готовая библиотека для pure AS3 от нашего коллеги. Есть Feathers, если используется Starling.

whitefang 16.11.2017 03:29

Не вкурил как им пользоваться. Можешь подсказать, если использовал?

caseyryan 16.11.2017 05:59

Цитата:

Сообщение от whitefang (Сообщение 1202954)
Не вкурил как им пользоваться. Можешь подсказать, если использовал?

Там есть примеры https://github.com/fljot/TouchScroll...ampleView.mxml
Правда все с MXML

Zebestov 16.11.2017 10:17

Использовал. В принципе, по примерам разобрался.
Хотя пару вопросов автору задавал лично. Он присутствует на форуме под тем же ником.


Часовой пояс GMT +4, время: 02:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.