大佬教程收集整理的这篇文章主要介绍了javascript – 包含“摇动”效果的HTML Canvas动画,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var ctx=cv.getContext('2d');
function preShake() {
ctx.save();
var dx = Math.random()*10;
var dy = Math.random()*10;
ctx.translate(dx,dy);
}
function postShake() {
ctx.restore();
}
function drawThings() {
ctx.fillStyle = '#F00';
ctx.fillRect(10,10,50,30);
ctx.fillStyle = '#0F0';
ctx.fillRect(140,30,90,110);
ctx.fillStyle = '#00F';
ctx.fillRect(80,70,60,40);
}
drawThings();
function animate() {
// keep animation alive
requestAnimationFrame(animatE);
// erase
ctx.clearRect(0,cv.width,cv.height);
//
preShake();
//
drawThings();
//
postShake();
}
animate();
请注意,您可能更喜欢使用一些sin函数和一些缓动来获得更平滑的效果:
var ctx=cv.getContext('2d');
var shakeDuration = 800;
var shakeStartTime = -1;
function preShake() {
if (shakeStartTime ==-1) return;
var dt = Date.Now()-shakeStartTime;
if (dt>shakeDuration) {
shakeStartTime = -1;
return;
}
var easingCoef = dt / shakeDuration;
var easing = Math.pow(easingCoef-1,3) +1;
ctx.save();
var dx = easing*(Math.cos(dt*0.1 ) + Math.cos( dt *0.3115))*15;
var dy = easing*(Math.sin(dt*0.05) + Math.sin(dt*0.057113))*15;
ctx.translate(dx,dy);
}
function postShake() {
if (shakeStartTime ==-1) return;
ctx.restore();
}
function startShake() {
shakeStartTime=Date.Now();
}
function drawThings() {
ctx.fillStyle = '#F00';
ctx.fillRect(10,cv.height);
//
preShake();
//
drawThings();
//
postShake();
}
startShake();
seTinterval(startShake,2500);
animate();
以上是大佬教程为你收集整理的javascript – 包含“摇动”效果的HTML Canvas动画全部内容,希望文章能够帮你解决javascript – 包含“摇动”效果的HTML Canvas动画所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。