微信小程序游戏-----动画

setInterval()
setTimeout()
requestAnimationFrame()
clearInterval()
clearTimeout()
cancelAnimationFrame()
var canvas =wx.createCanvas()
var ctx =canvas.getContext("2d")

ctx.fillStyle ="red"
ctx.fillRect(0,0,100,100)
ctx.clearRect(0,0,canvas.width,canvas.height)  //清除画布
ctx.fillRect(0,20,100,100)
ctx.clearRect(0,0,canvas.width,canvas.height)
ctx.fillRect(0,150,100,100)
var num =0
var timer=setInterval(function(){
    num++
    ctx.clearRect(0,0,canvas.width,canvas.height)
    ctx.fillRect(0,num++,100,100)
    if(num>150){
        clearInterval(timer)
    }
},20)

 

//用延时器做动画
var canvas =wx.createCanvas()
var ctx =canvas.getContext("2d")

 ctx.fillStyle ="red"

//延迟定时器去做
ctx.fillRect(0,0,100,100)
setTimeout(() => {
    ctx.clearRect(0,0,canvas.width,canvas.height)  
    ctx.fillRect(0,150,100,100)
}, 500);
var canvas =wx.createCanvas()
var ctx =canvas.getContext("2d")

 ctx.fillStyle ="red"
VAR TIMER =NULL

//延迟定时器去做
ctx.fillRect(0,0,100,100)
var num =0;
loop()
function loop(){
    num ++
    TIMER= setTimeout(() => {
        ctx.clearRect(0,0,canvas.width,canvas.height)  
        ctx.fillRect(0,num,100,100)
        if(num<150){
           clearTimeout(TIMER)
        }
        
    }, 20);
}
var canvas = wx.createCanvas();
var ctx = canvas.getContext("2d");

ctx.fillStyle = "red";
//requestAnimationFrame
var num = 0
loop()
function loop(){
    num++
    requestAnimationFrame(function(){
            ctx.clearRect(0,0,canvas.width,canvas.height)
            ctx.fillRect(0,num,100,100)
            loop()
    })
}

//碰撞检测
var canvas = wx.createCanvas();
var ctx = canvas.getContext("2d");

var img = wx.createImage();
var firstX = 0;
var firstY = 0;
var imgW = 100;
var imgH = 100;
var isShow = false;

img.src = "./source/2.jpg";
img.onload = function() {
  ctx.drawImage(img, firstX, firstY, imgW, imgH);
};

wx.onTouchStart(function(e) {
  var touch = e.changedTouches[0];
  var clientX = touch.clientX;
  var clienty = touch.clientY;
  if (
    firstX < clientX &&
    clientX < firstX + imgW &&
    (firstY < clienty && clienty < firstY + imgH)
  ) {
    isShow = true;
  }
});

wx.onTouchMove(function(e) {
  if (isShow) {
    ctx.clearRect(0, 0, canvas.width, canvas.height); //清除画布
    var touch = e.changedTouches[0];
    var clientX = touch.clientX;
    var clienty = touch.clientY;
    if((clientX-imgW/2)<0){
        firstX =0
    }else if((clientX-imgW/2)>(canvas.width-imgW)){
        firstX = canvas.width-imgW
    }else{
        firstX = clientX-imgW/2
    }

    if((clienty-imgH/2)<0){
        firstY =0
    }else if((clienty-imgH/2)>(canvas.height-imgH)){
        firstY =(canvas.height-imgH)
    }else{
        firstY = clienty-imgH/2
    }
    ctx.drawImage(img,firstX,firstY,imgW,imgH);
  }
});
wx.onTouchEnd(function(){
    isShow = false
})

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值