zoukankan      html  css  js  c++  java
  • HTML5 canvas游戏工作原理

    HTML5已经不是一个新名词。它看上去很cool,有很多feature,大多数人普遍看好它的发展。对于我来说,最感兴趣的是它的canvas标签,可以结合Javascript来绘制游戏画面。

    我们可以在Javascript脚本中获得页面中的canvas对象,以及它的绘图上下文:

    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d")

    通常每个游戏会有游戏循环:

    var FPS = 30; 
    setInterval(function() { 
        update(); 
        draw(); 
    }, 1000/FPS);

    每次循环的时候会先执行游戏逻辑,计算对象,更新场景。比如说场景里有个对象在做自由落体运动。你就需要不断地计算并更新它的位移,速度。

    function update () {
      o.y += o.y_speed;
      o.y_speed += o.y_acceleration;    
    }

    更新完场景后需要擦除并重新绘制场景。

    复制代码
    function draw() {
      context.fillStyle = '#000000'; 
      context.fillRect(0, 0, canvas.width, canvas.height);
      context.fillStyle = '#2222ff'; 
      context.fillRect(o.x - o.width/2, o.y - o.height/2, o.width, o.height);
    }
    复制代码

    更新和绘制场景的速度可能会影响到FPS。

    接下来,我们可以添加事件处理,比如说让游戏响应用户鼠标点击事件:

    document.onclick = function(event){ 
      o.x = event.pageX - canvas.offsetLeft;
      o.y = event.pageY - canvas.offsetTop;
      o.y_speed = 0;
    }

    这样就形成了显示-动作-反馈的closed loop。

    这些是最基本的游戏工作原理。当然我们知道要完成一个游戏是有很多工作需要做的,涉及到很多领域。先表过不提。接下去我会谈一下如何使用Selenium和 openCV对HTML5 canvas游戏进行自动化功能测试

  • 相关阅读:
    1、一条sql查询语句的执行过程
    go 内存分配
    GO Json
    gorm CRUD:读写数据
    go 基于切片的队列实现
    go的错误处理
    grpc
    sqlalchemy 判断字段是否存在
    定时函数
    用Python获取Linux资源信息的三种方法
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10452889.html
Copyright © 2011-2022 走看看