• 简单的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游戏进行自动化功能测试

  • 相关阅读:
    response输出随机图片、定时刷新网页
    @Transactional注解使用心得
    mybatis缓存(一,二级别)
    数据库四大特性及数据库隔离级别
    mybatis @SelectKey加于不加的区别
    MYSQL索引类型+索引方法
    页面缓存例子
    概率生成模型超越神经网络
    生成学习
    过程量与状态量
  • 原文地址:https://www.cnblogs.com/silmerusse/p/3200829.html
Copyright © 2020-2023  润新知