zoukankan      html  css  js  c++  java
  • html5 画布上的rotate使用

    作为刚进公司的毕业生,第一个项目便是开发html5游戏,于是网上搜寻各种有关html5的资料,把w3School中有关html5的教程通通过了一遍,发现里面的教程非常适合刚接触html5的人,作为菜鸟的我看了各种资料终于有所领会,作为游戏开发,其实就是通过JavaScript对html5 中Canvas画布进行各种处理,之后又在网上搜了一些有关html5 游戏Demo,其中有类似贪吃蛇,超级玛丽这样的,之后自己也尝试写了个Demo,是关于摇摆Rotate,伸长以及碰撞到物体检测。

    先附上绳子摇摆rotate代码,过段时间再加上伸长和碰撞检测代码(在网上随便找了两张图片在代码下方):

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
            <canvas id="canvas"></canvas>
    </body>
    <script>
            // 设置定时器用来控制旋转
            var interval;
            // 绳子摇摆的角度
            var angle = 0;
            // 接在绳子上钩子摇摆角度
            var hookAngle = 0;
            // 控制摇摆的变量
            var i = 1;
            var flag = 1;
            // 获得画布
            var canvas = document.getElementById("canvas");
            var context = canvas.getContext("2d");
            // 获得绳子图片   
            var line = new Image();
            line.src = "line.png";
            line.width = 100;
            // 获得钩子图片
            var hook = new Image();
            hook.src = "laoshu.png";
            
            // 定时器重复执行animate方法
            function animate() {
                    lineRotate();
                    clearInterval(interval);
                    interval = setInterval("animate()", 50);
            }
            
            // 绳子摇摆 
            function lineRotate(){
                    if (angle > Math.PI / 2) {
                            flag = -1;
                    } else if (angle < 0){
                            flag = 1;
                    }
                    if (flag == 1) {
                            i = 1;
                    } else {
                            i = -1;
                    }
                    angle +=  i*Math.PI / 180;
                    draw();
            }
            
            //画图 
            function draw() {
                    context.clearRect(0,0,canvas.width, canvas.height);
                    context.translate(0,0);
                    context.save();
                    context.rotate(angle);
                    context.drawImage(line, 0 , 0, line.width, line.height);
                    context.save();
                    context.translate(line.width + hook.width / 2, hook.height / 2);  
                    context.rotate(-angle);
                    context.drawImage(hook, -hook.width / 2, -hook.height / 2);
                    context.restore();
                    context.restore();
            }
    </script>
    </html>
    line.png:   
    laoshu.png:
  • 相关阅读:
    八、vue使用element-ui组件
    七、vue语法补充二(动态组件 & 异步组件、访问元素 & 组件、混入)
    oracle中使用sql语句生成10w条测试数据
    六、vue路由Vue Router
    五、vue状态管理模式vuex
    前端生态/工程化
    四、vue语法补充
    三、vue脚手架工具vue-cli的使用
    二、vue中组件的使用
    使用阿里云OSS上传文件
  • 原文地址:https://www.cnblogs.com/xushu114/p/3436877.html
Copyright © 2011-2022 走看看