當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript framesync.update函數代碼示例

本文整理匯總了TypeScript中framesync.update函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript update函數的具體用法?TypeScript update怎麽用?TypeScript update使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了update函數的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: action

  action(({ complete, update }) => {
    const {
      velocity = 0,
      from = 0,
      power = 0.8,
      timeConstant = 350,
      restDelta = 0.5,
      modifyTarget
    } = props;
    let elapsed = 0;
    const amplitude = power * velocity;
    const idealTarget = Math.round(from + amplitude);
    const target =
      typeof modifyTarget === 'undefined'
        ? idealTarget
        : modifyTarget(idealTarget);

    const process = sync.update(({ delta: frameDelta }) => {
      elapsed += frameDelta;
      const delta = -amplitude * Math.exp(-elapsed / timeConstant);
      const isMoving = delta > restDelta || delta < -restDelta;
      const current = isMoving ? target + delta : target;

      update(current);

      if (!isMoving) {
        cancelSync.update(process);
        complete();
      }
    }, true);

    return {
      stop: () => cancelSync.update(process)
    };
  });
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:35,代碼來源:index.ts

示例2:

 complete: () => {
   if (!hasCompleted) {
     hasCompleted = true;
     numCompletedActions++;
     if (numCompletedActions === numActions) sync.update(complete);
   }
 },
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:7,代碼來源:multi.ts

示例3: expect

    sync.update(() => {
      expect(smoother(100)).toBe(100);

      sync.update(() => {
        expect(smoother(200)).toBeGreaterThan(100);
        resolve();
      });
    });
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:8,代碼來源:smooth.test.ts

示例4: updateTween

 process = sync.update(({ delta }) => {
   // TODO Maybe try something different to eat the variations in framerate
   elapsed += delta * playDirection;
   updateTween();
   if (isTweenComplete() && complete) {
     cancelSync.update(process);
     sync.update(complete, false, true);
   }
 }, true);
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:9,代碼來源:index.ts

示例5: Promise

  return new Promise(resolve => {
    sync.update(() => {
      expect(smoother(100)).toBe(100);

      sync.update(() => {
        expect(smoother(200)).toBeGreaterThan(100);
        resolve();
      });
    });
  });
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:10,代碼來源:smooth.test.ts

示例6: action

  action(({ update }) => {
    const output = {
      touches: points,
      scale,
      rotate
    };

    let initialDistance = 0.0;
    let initialRotation = 0.0;

    const isGesture = points.length > 1;

    if (isGesture) {
      const [firstTouch, secondTouch] = points;
      initialDistance = distance(firstTouch, secondTouch);
      initialRotation = angle(firstTouch, secondTouch);
    }

    const updatePoint = () => {
      if (isGesture) {
        const [firstTouch, secondTouch] = points;
        const newDistance = distance(firstTouch, secondTouch);
        const newRotation = angle(firstTouch, secondTouch);

        output.scale = scale * (newDistance / initialDistance);
        output.rotate = rotate + (newRotation - initialRotation);
      }

      update(output);
    };

    const onMove = (e: TouchEvent) => {
      if (preventDefault || e.touches.length > 1) e.preventDefault();
      sync.update(updatePoint);
    };

    const updateOnMove = listen(document, 'touchmove', {
      passive: !preventDefault
    }).start(onMove);

    // TODO: Look into running this as a process
    if (isTouchDevice) sync.update(updatePoint);

    return {
      stop: () => {
        cancelSync.update(updatePoint);
        updateOnMove.stop();
      }
    };
  });
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:50,代碼來源:index.ts

示例7: action

  action(({ update }) => {
    const updatePoint = () => update(point);

    const onMove = (e: MouseEvent) => {
      if (preventDefault) e.preventDefault();
      sync.update(updatePoint);
    };

    const updateOnMove = listen(document, 'mousemove').start(onMove);

    if (isMouseDevice) sync.update(updatePoint);

    return {
      stop: () => {
        cancelSync.update(updatePoint);
        updateOnMove.stop();
      }
    };
  });
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:19,代碼來源:mouse.ts

示例8:

 const onMove = (e: TouchEvent) => {
   if (preventDefault || e.touches.length > 1) e.preventDefault();
   sync.update(updatePoint);
 };
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:4,代碼來源:index.ts

示例9: speedPerFrame

    ({ complete, update }): PhysicsInterface => {
      let {
        acceleration = 0,
        friction = 0,
        velocity = 0,
        springStrength,
        to
      } = props;
      const { restSpeed = 0.001, from = 0 } = props;
      let current = from;

      const process = sync.update(({ delta }) => {
        // Integration doesn't work well with very low numbers
        const elapsed = Math.max(delta, 16);

        if (acceleration) velocity += speedPerFrame(acceleration, elapsed);
        if (friction) velocity *= (1 - friction) ** (elapsed / 100);

        if (springStrength !== undefined && to !== undefined) {
          const distanceToTarget = to - current;
          velocity += distanceToTarget * speedPerFrame(springStrength, elapsed);
        }

        current += speedPerFrame(velocity, elapsed);

        update(current);

        const isComplete =
          restSpeed !== false && (!velocity || Math.abs(velocity) <= restSpeed);

        if (isComplete) {
          cancelSync.update(process);
          complete();
        }
      }, true);

      return {
        set(v) {
          current = v;
          return this;
        },
        setAcceleration(v) {
          acceleration = v;
          return this;
        },
        setFriction(v) {
          friction = v;
          return this;
        },
        setSpringStrength(v) {
          springStrength = v;
          return this;
        },
        setSpringTarget(v) {
          to = v;
          return this;
        },
        setVelocity(v) {
          velocity = v;
          return this;
        },
        stop: () => cancelSync.update(process)
      };
    }
開發者ID:Popmotion,項目名稱:popmotion,代碼行數:64,代碼來源:index.ts


注:本文中的framesync.update函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。