HTML5 canvas游戏工作原理

摘要:
HTML5不再是一个新术语。对我来说,最有趣的是它的画布标签,它可以与Javascript结合来绘制游戏屏幕。我们可以在Javascript脚本varcanvas=document中获取页面中的画布对象及其绘图上下文。按ID获取元素;varcontext=画布。GetContext通常,每个游戏都有一个游戏周期:varFPS=30;setInterval;每个循环将首先执行游戏逻辑、计算对象和更新场景。接下来,我们可以添加事件处理。例如,让游戏响应用户的鼠标单击事件:document。onclick=函数{o.x=event.pageX canvas.offsetLeft;o.y=event.pageY canvas.ooffsetTop;o.y_speed=0;}以这种方式,形成了显示动作反馈的闭环。接下来,我将讨论如何使用Selenium和openCV来测试HTML5画布游戏的自动化功能。

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

免责声明:文章转载自《HTML5 canvas游戏工作原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python | TCP 三次握手和四次挥手图解(有限状态机)WCF中的数据契约(Continued)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF 2D绘图(1)Shape

Shape画图形 特点: 使用XAML输出 继承自FrameworkElement的,因此拥有了众多的属性和事件 1.Ellipse <Canvas Height="200" Width="250" HorizontalAlignment="Left"> <Ellipse Wi...

使用Audio API设计绚丽的HTML5音乐播放器

HTML5有两个很炫的元素,就是Audio和Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用。 无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道和一些元数据,这些是和你的视频或者音频控件绑定到一块的,这样才形成了一个完整的播放组件。 浏览器支持情况: 浏览器 支持情况 编解码器 Chrome 3....

突袭HTML5之Javascript API扩展2 地理信息服务

      现在比较火的一类服务叫做基于位置的服务(location-based service, LBS),这一类服务就是企业利用某点(例如用户所在的位置)坐标附近的区域提供服务的信息,比如常见的地图相关服务。在HTML5中,加入了新的地理位置API用来确定和分享地理位置。 隐私申明      在与远程Web服务器共享物理位置时,隐私是一个需要关注的问题...

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画

市面上大多数的热点地图,都是以 JavaScript 来做的,但是使用 CSS3 制作的热点地图倒还真的挺少见的。 其实 CSS3 的功能也很强大,能帮助我们实现很多用 JavaScript 实现的效果,最近小编刚学会 HTML5 和 简单的 CSS3,在这里用 CSS3 实现了热点地图动画,效果如下: 下面给大家初步讲讲,如何用 CSS3 制作一个热点...

【实战HTML5与CSS3 第二篇】绚丽的快速导航!

目录 【实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!! 【实战HTML5与CSS3 第二篇】绚丽的快速导航! 【实战HTML5与CSS3 第三篇】我第一个HTML5网页诞生了(提供源码) 前言 今天9点就起来了,因为下午出去有个聚会,所以就早点起来进行,否则这个进度有点吃紧啊,昨天初略的完成了导航以及爆炸的图片,这里来回顾下:...

HTML5离线缓存问题

HTML5离线缓存问题 1.应用程序缓存 什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。应用程序缓存为应用带来三个优势: 离线浏览 - 用户可在应用离线时使用它们 速度 - 已缓存资源加载得更快 减少服务器负载 - 浏览器将只从服务器下载更新过...