Программирование пользовательского удобства - PullRequest
0 голосов
/ 11 апреля 2019

Пытаюсь создать динамический wheelSpin с эффектом easeInOut, но я хочу более точно управлять силой входа и выхода.Это будет намного дольше, например.AS3 Tween блокирует вас в некоторых простых пресетах, но не дает мне контроль, который мне нужен.Я не нашел ни одного учебника о том, как его создать.Единственное, что я видел для этого, - Greensock Custom Ease, но я пытаюсь либо создать свое собственное, либо использовать что-то бесплатное, у которого сначала нет проблем с лицензией на использование.

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

1 Ответ

1 голос
/ 12 апреля 2019

Вы можете использовать мой класс анимации ru.delimiter.math.TweenALot , это зависит от ru.delimiter.events.Chronos из того же репо, вы можете взять его или васможно изменить TweenALot на ENTER_FRAME .

Класс довольно старый, поэтому, пожалуйста, не судите меня за его стиль.

Использование:

import ru.delimiter.math.TweenALot;

var aTween:TweenALot = new TweenALot;

// The tweening target.
aTween.target = this;

// The destination properties.
aTween.properties = {x:100, y:100, alpha:0};

// The tweening duration, in milliseconds.
aTween.duration = 3000;

// Easing.
aTween.easingFunction = TweenALot.easeInOut;

// Pass the complete handler and start tweening.
aTween.start(onComplete);

function onComplete():void
{
    trace("I have disappeared!");

    // Destroy and release the tween instance.
    aTween.destroy();
    aTween = null;
}

Затем, внизу класса, есть ряд функций замедления, я думаю, что я сделал их, чтобы быть совместимыми с чем-то, просто не помню, что именно.Таким образом, вы можете создавать свои собственные функции замедления, вам даже не нужно добавлять их в класс, просто присвойте им свойство easingFunction анимации движения.

function weirdEasing(t:Number, b:Number, c:Number, d:Number):Number
{
    var aProgress:Number = Math.min(1, t / d);

    if (aProgress <= 0.5) return b;

    return b + c * Math.pow((aProgress - 0.5) * 2, 2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...