Canvas 创建一个小球,并且可以在画布里来回移动

该博客介绍了如何使用HTML5 Canvas创建一个小球,并使其在画布中左右移动。通过判断小球位置,当小球达到画布右侧时,会清空画布并反向移动至左侧,形成来回移动的效果。
摘要由CSDN通过智能技术生成

1、获取页面元素,并关联上下文;

 var canvas=document.getElementById('canvas');
 var ctx=canvas.getContext('2d');

2、 当小球到底画布的最右侧,则清空画布;(x >=canvas.width+20),+20是小球完全走出页面;-20就是小球在画布的最右侧

        var x=100;
        var timer=setInterval(function(){
            //清空画布  清空上一个动画 
            ctx.clearRect(0,0,canvas.width,canvas.height);
            x+=10;
            if(x >=canvas.width+20){//小球到达最右侧
               //停止运动
                clearInterval(timer);
            }
            ctx.beginPath();
            ctx.arc(x,100,20,0,2*Math.PI,false);
            ctx.fillStyle='pink';
            ctx.fill();

        },50)

3、当小球到达最右侧 ,即x >=canvas.width-20时,让其原路返回。

     我们可以定义一个开关,当开关打开的时候x轴不断增加&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在微信小程序创建一个canvas图片,可以按照以下步骤: 1. 在wxml文件中创建一个canvas标签,设置宽高和id属性: ``` <canvas id="myCanvas" style="width: 100%; height: 100%;"></canvas> ``` 2. 在js文件中获取canvas元素和绘图上下文: ``` let canvas = wx.createCanvasContext('myCanvas'); ``` 3. 使用绘图上下文的API进行绘制: ``` canvas.setFillStyle('red'); canvas.fillRect(0, 0, 100, 100); canvas.draw(); ``` 这样就可以在canvas中绘制一个红色的矩形。 如果想通过触控移动canvas图片,可以按照以下步骤: 1. 在canvas上监听touchstart、touchmove、touchend事件: ``` canvas.addEventListener('touchstart', onTouchStart); canvas.addEventListener('touchmove', onTouchMove); canvas.addEventListener('touchend', onTouchEnd); ``` 2. 在事件回调函数中获取触摸点坐标,计算出canvas移动的距离: ``` let startX, startY; function onTouchStart(e) { startX = e.touches[0].clientX; startY = e.touches[0].clientY; } function onTouchMove(e) { let moveX = e.touches[0].clientX - startX; let moveY = e.touches[0].clientY - startY; startX = e.touches[0].clientX; startY = e.touches[0].clientY; canvas.translate(moveX, moveY); canvas.draw(); } function onTouchEnd(e) { // do something } ``` 3. 使用canvas的translate方法移动canvas的坐标系,再调用draw方法重新绘制canvas即可。 完整代码: ``` // wxml <canvas id="myCanvas" style="width: 100%; height: 100%;"></canvas> // js let canvas = wx.createCanvasContext('myCanvas'); canvas.setFillStyle('red'); canvas.fillRect(0, 0, 100, 100); canvas.draw(); let startX, startY; canvas.addEventListener('touchstart', onTouchStart); canvas.addEventListener('touchmove', onTouchMove); canvas.addEventListener('touchend', onTouchEnd); function onTouchStart(e) { startX = e.touches[0].clientX; startY = e.touches[0].clientY; } function onTouchMove(e) { let moveX = e.touches[0].clientX - startX; let moveY = e.touches[0].clientY - startY; startX = e.touches[0].clientX; startY = e.touches[0].clientY; canvas.translate(moveX, moveY); canvas.draw(); } function onTouchEnd(e) { // do something } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值