本文整理匯總了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)
};
});
示例2:
complete: () => {
if (!hasCompleted) {
hasCompleted = true;
numCompletedActions++;
if (numCompletedActions === numActions) sync.update(complete);
}
},
示例3: expect
sync.update(() => {
expect(smoother(100)).toBe(100);
sync.update(() => {
expect(smoother(200)).toBeGreaterThan(100);
resolve();
});
});
示例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);
示例5: Promise
return new Promise(resolve => {
sync.update(() => {
expect(smoother(100)).toBe(100);
sync.update(() => {
expect(smoother(200)).toBeGreaterThan(100);
resolve();
});
});
});
示例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();
}
};
});
示例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();
}
};
});
示例8:
const onMove = (e: TouchEvent) => {
if (preventDefault || e.touches.length > 1) e.preventDefault();
sync.update(updatePoint);
};
示例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)
};
}