Как Rotatez с ослаблением с помощью платформы Famo.us

StackOverflow https://stackoverflow.com//questions/24007028

  •  20-12-2019
  •  | 
  •  

Вопрос

Скажем, у меня есть поверхность, прикрепленная к модификатору.Затем я настроил слушателя, чтобы реагировать на события, вращая поверхность с помощью ослабления.Я нахожу, что когда угол поворота попадает в 2PI, поверхность быстро вращается в следующем положении вращения.Есть ли способ сделать предметы бесконечно вращаться с ослаблением?

Это было полезно?

Решение

Вопрос бесконечного ослабления - это немного нечеткий, но я ожидаю, что вы смотрите, чтобы облегчить начало, а затем просто продолжать идти.Для того, чтобы масштабировать ослабление, эта часть должна быть конечной.Поэтому я бы сломал это до двух (или три, если вам нужен шансы) детали. Вот код (вам нужно, чтобы выработать скорость, когда вы изменяете переход.)

/* globals define */
define(function(require, exports, module) {
    var Engine = require('famous/core/Engine');
    var Surface = require('famous/core/Surface');
    var StateModifier = require('famous/modifiers/StateModifier');
    var Transform = require('famous/core/Transform');
    var Easing = require('famous/transitions/Easing');
    var Modifier = require('famous/core/Modifier');
    var Transitionable = require("famous/transitions/Transitionable");

    function app() {

        var mainContext = Engine.createContext();

        var baseTime;
        var foreverFlag = false;

        var surface = new Surface({
            size: [20, 20],
            content: 'LearnFamo.us',
            classes: ['red-bg'],
            properties: {
                textAlign: 'center',
                lineHeight: '20px'
            }
        });

        function goForever() {
            baseTime=Date.now();
            foreverFlag = true;
        }

        var trans = new Transitionable(0);
        trans.set(Math.PI,
            {duration:5000, curve:Easing.inElastic},
            goForever
            );

        var surfmod1 = new StateModifier({
            align: [0.5,0.5],
            origin: [0.5,0.5]
        });

        var surfmod2 = new Modifier({
            align: [0.5,0.5],
            origin: [0.5,0.5]
        });
        surfmod2.transformFrom(
            function() {
                return Transform.rotateZ(foreverFlag?(Math.PI+Math.PI/1000 * (Date.now() - baseTime)):trans.get());
            }
        );

        mainContext.add(surfmod1).add(surfmod2).add(surface);
    }

    app();

});
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top