You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
8.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 第28讲 | 热点剖析HTML5技术是如何取代Flash的
本周开始,我将会在**每周六**更新一篇“热点剖析”阐述我对2D游戏开发之外的热点比如HTML5游戏、移动端游戏、AR和人工智能在游戏领域的应用以及我对微信小游戏、移动游戏、独立游戏开发者的一些观点和看法。
我已经为你讲解了核心的开发知识,对于这些相对热门领域的知识,你可以根据兴趣进行选择学习。
本周及接下来两周的周六我会依次为你介绍HTML5游戏以及[如何选择HTML5的游戏引擎](https://time.geekbang.org/column/article/9702)并带你编写一款H5小游戏。
从前几年开始H5这个技术就开始蓬勃发展。不管是懂行的还是不懂行的都开始以“H5”这个字眼来描述产品。比如老板会说“我们就做个H5的页面吧”或者“这个游戏是H5的吗”。很多人已经把H5等价于“手机端页面”了这样的理解显然是错误的。
那么H5究竟是什么它的优点在哪里为什么现在大家都在谈论H5你真的知道H5是什么并真的深入理解了它吗
## Flash是什么
首先在说H5之前我想先介绍一下Flash技术。
**Flash是由Adobe公司开发的一种富媒体技术起初是一种放置在浏览器中的插件填补了当时HTML页面平淡的空白增强了网页交互的能力。**你可以在Flash中做出任何东西也可以访问本地电脑中的东西。后来Adobe公司推出了播放器在电脑上不打开浏览器也可以观看或者游戏Flash程序员编写出来的产品。乃至今日依然有大量应用于Flash的富媒体应用比如视频的播放比如独立的小游戏比如网页游戏甚至桌面应用都是使用Flash开发的。
虽然Flash拥有大量优点并在当时弥补了网页端的很多不足但是Flash的缺点也是很明显的。
首先,**它的浏览器插件的运行效率并不高,而且访问电脑资源也很不方便,导致很多程序员在开发的过程中出现许多的问题**就算成功发布了一款Flash应用浏览器也会被Flash插件拖得很慢电脑会因此变得很卡所以H5技术出现后很多人就开始转投到H5的门下。
另一方面由于Flash技术掌握在Adobe公司下一家独大所以从商业角度讲很多大公司并不会坐视不管就开始从Flash中抽取内容并制定公有的Flash规范到了后面就添加到了H5规范下成为大家都能掌握的规范。
谷歌苹果等大公司都不支持Flash应用所以在大公司的压力下以及现在H5的流行Adobe公司决定在2020年终止Flash技术的提供。
## H5技术究竟是什么
有了这个铺垫我们再来看看H5技术究竟是什么它为什么会取代Flash。
首先H5大量应用在手机端的网页上面但这并不等于“H5等于手机网页”因为普通的HTML页面也可以适配手机端屏幕。
H5全称是HTML5HTML是超文本标记语言的首字母缩写。而HTML4.01的标准在1999年年底发布。HTML5的草案前身是网络应用1.0Web Application而HTML5的第一份草案于2008年1月月份公布定稿是在2012年的年底。
在H5标准出现后各大浏览器纷纷开始支持H5比如火狐、谷歌的Chrome、IE9、苹果的SafariOpera等等。事实上**H5技术很大程度上是为了移动平台所设计能在移动平台支持多媒体当然取代Flash这是顺理成章的事情**但是H5技术并不等同于移动平台网页我们在很多的PC端的网页也能看到HTML5的技术。
## H5技术有什么新特性
H5技术拥有很多最新的特性。
在**语法**方面HTML5的语法给了网页编写程序员拥有更好的语法结构以及更加丰富的标签。比如video标签就可以直接在H5页面中嵌入播放器。H5也支持更多的**设备兼容**,比如可以支持摄像头,支持麦克风(移动端的或者电脑端的都可以)。
H5也支持**本地存储**的功能我们可以使用H5技术来开发网页app这些都来自本地存储的缓存技术所以H5网页的**载入速度**会比传统网页更加迅速和便捷连接也变得更快。H5支持多媒体这是必然的包括音频、视频、摄像头等功能事实上使用H5技术的多媒体技术已经完全可以取代Flash技术了。
在**编程**方面以前我们需要跨域的技术在H5中可以使用XMLHttpRequest来解决跨域问题。而且H5页面一经修改就能直接更新上去基本上刷新页面就能看到效果而如果使用Flash来做需要进行编译和发布并且替换Flash页面才可以看到Flash应用的更新从时间效率讲H5技术又是技高一筹。
另外如果有专业的SEO人员也可以很方便地通过H5来做SEO优化做网站的索引和搜索引擎的抓取优化工作这在Flash来说几乎是不可能做到的工作。
## 用H5编写游戏有什么优点
使用H5技术编写的应用和游戏可以很方便地嵌入到苹果或者安桌的App中。这种方式可以免去原生开发两套App的麻烦只需要编写一套类似App的H5页面然后使用类似WebView的方式来嵌入到原生应用中。
由于**H5页面可以随时更改**所以现在苹果商店对于H5内嵌应用的审核比较严格所以H5页面必须做得好而且逻辑流程都不能有问题。所以在H5发展的阶段有很多声音说H5除了取代Flash还会取代App事实上这是不可能的。虽然H5取代Flash已经毋庸置疑但是H5取代原生App还是有很多的掣肘比如H5只能编写轻量级的App如果需要那种画面效果特别好的App或者对设备进行深层次的操控那就只有原生可以办到了所以现在有许多的App开发都选择H5和原生混合开发这样会减轻一定的工作量并且在实现其他深层次的功能的时候也能使用原生代码。
**用H5比Flash编写游戏更快速占用资源也更少**所以以前利用Flash技术编写的游戏现在都改成H5技术编写当然H5编写的游戏仍然比不上原生编写的游戏。毕竟原生有对底层的操控能力直接而且快速而H5毕竟需要通过浏览器的解释和渲染所以它的速度基本取决于浏览器代码优化地再好也无法直接穿过浏览器这一层去做事情。
所以用H5编写的游戏如果是在电脑端我们可以编写大一点的网络游戏因为电脑的资源能随心所欲地利用而如果在手机端H5技术适合编写小型游戏比如电商领域、推广平台等营销类的小游戏再比如玩家操作不是特别复杂的游戏比如战棋类的、益智类的、策略类的或者静态画面比较多的游戏比如选择一个正确答案猜一个成语那样的等等。这样的游戏占用的资源不大动态资源载入不多移动平台也不会有太多的卡顿感各种手机都可以适配和游戏这样小型的H5游戏是比较适合移动平台的。
**H5游戏的传播能力比Flash更好。**首先Flash技术需要安装一个插件才可以使用然而H5游戏只需要浏览器支持即可所以从这方面讲只需要你通过浏览器分享一个H5游戏到微信、QQ等社交软件就可以直接进行传播而不像Flash那样需要安装额外的东西。所以利用H5技术编写的营销工具现在占领了绝对的主流所以才会有本篇文章最初所说很多人认为“H5等价于移动平台网页”这样的误解。
## 小结
总结一下今天的内容:
* H5游戏拥有比Flash更好用更开放的规范开发和发布也更方便修改代码后放到网上只需要刷新一下页面就可以看到修改的内容
* 另外Flash技术需要安装一个插件而H5技术直接在浏览器就可以呈现。所以H5技术完全替代Flash只是时间问题。
现在留一个小问题给你。
我们都知道浏览器渲染出来的网页都是2D的页面和游戏但是H5技术也可以编写3D视觉效果的内容。你知道H5技术所拥有的3D效果是用什么技术实现的吗
欢迎留言说出你的看法。我在下一节的挑战中等你!