如何开发一个html5简单小游戏的HTML5 Canvas 小游戏

如何开发一个简单的html5 canvas 小游戏_百度知道
如何开发一个简单的html5 canvas 小游戏
提问者采纳
这是update函数;rgb(250.x + 32)
&& monster。它所做的第一件事情是检查用户是否按下了上下左右四个箭头键;/).font = &
&#47.5秒;;而如果间隔是0; + monstersCaught.random() * (canvas, / The main game loop
var main = function () {
var now = D&#47.now();
render(): &quot.x +=G/ Update game objects
var update = function (modifier) {
if (38 in keysDown) { &#47.speed */秒),
ctx,我们想让游戏逻辑在一个单独的地方对游戏中发生的事情进行处理, false)。我们已经实现了根据用户的输入来移动英雄; Handle keyboard controls
var keysDown = {},只有当图片载入完成后, function (e) {
keysDown[e,所以modifier的值很小: 0。当创建了canvas之后,
y.x。如果间隔刚好为1秒时.createElement(&
var ctx = canvas, 250)&quot。为此我们需要将用户输入保存下来以备稍后处理!
reset().x; 1000),它的值就为0、怪物);
/keyup&.speed * modifier. 游戏主循环[javascript] view plaincopy&#47、英雄;
update(delta &#47!5。2.speed * modifier.src = &
通过调用reset函数来开始新游戏. 创建一个Canvas对象[javascript] view plaincopy&#47.x = canvas,还可以将载入图像的功能封装成一个类或别的任何形式;&#47.height - 64));monster对象不会移动;
};24px Helvetica&quot,这是最后一段代码;
if (39 in keysDown) { &#47: 0; Let&#39,游戏每隔一定时间会调用它一次;
我们首先要做的是创建一个canvas对象。但在这里; Throw the monster somewhere on the screen randomly
monster.keyCode] = true.height = 480;top&quot:英雄是否与怪物发生了碰撞——当英雄与怪物发生碰撞时,因为任何位于表层的图片都会将其下面的像素覆盖掉.x + 32)
&&2d&quot,不过我在这儿先解释一下,它的值就会为1,然后随机选择一个位置来安置怪物.x &lt。我们通过简单地将事件对应的键编码(keyCode)保存在keysDown变量中来实现。该函数将英雄(即玩家角色)放到屏幕中间。简单吧, 250;
addEventListener(&&#47,
var monster = {
bgImage, function (e) {
delete keysDown[e,然后是英雄和怪物.drawImage(monsterImage.png&
定义一些变量;
addEventListener(&quot,即英雄移动的距离为其速度的一半。modifier参数是一个从1开始的与时间相关的数.drawImage(heroImage。6.random() * (;
var delta = now -//keydown&quot。7, hero,以确定是否有其他事件发生;
游戏的主循环用来控制游戏流程。注意顺序很重要;
canvas。我想尽量简单化. 开始游戏吧[javascript] view plaincopy/&#47。(还记得吗. 处理玩家输入[javascript] view plaincopy&#47,当用户开始输入时;/),但我们还可以在移动英雄时对其进行检查; Create the canvas
var canvas = document! Arena Case Study”,可能需要马上开始播放动画或请求数据,就表示用户目前正按下这个键. 定义游戏要使用的对象[javascript] view plaincopy&#47.keyCode],JS将会报一个DOM error的错误;= (;
};&#47。代码中的bgReady用来标识图片是否已完全载入, 32).fillStyle = &images/ 2;
&#47,所以只用了Image对象来做。最后调用render并更新记录的时间.textAlign = &= (monster。我们会用到三张图片(背景。此处我用的是JS;
};&#47。通常update函数调用的间隔很短; Player holding up
hero.y -= hero.fillText(&quot.appendChild(canvas).body。建议最好是能够自己亲自试一把;= (hero。你会在游戏的主函数即main函数中看到它; Draw everything
var render = function () {
if (bgReady) {
}。update有一个modifier参数;/&#47: 0
}。可以用JavaScript或HTML来做.y);
if (37 in keysDown) { &#47。4,以此类推,但用这种方式能够确保不管代码执行的速度怎么样,都非常简单.height /
ctx.getContext(&quot,这样我们才能计算时间差(自上次循环以来经过的时间).textBaseline = & Are they touching.y + 32)
},所以让我们载入一些图片吧。首先我们将背景图片绘制到
var bgImage = new Image(). 新游戏[javascript] view plaincopy/ Background image
var bgReady =
var monstersCaught = 0。首先我们要获得当前的时间, Score
reset(). 更新对象[javascript] view plaincopy&#47,稍后会用到. 渲染对象[javascript] view plaincopy&#47, false),英雄移动的距离即为256像素(英雄的速度为256像素&#47: 0
then = now.5。8。如果是.width - 64));,并且把它加到当前文档中,所以只是绘制一下就ok了; Execute as fast as possible
快完成了.drawImage(bgImage,我们就可以获取它的上下文对象(context).width = 512, 0;
monster.width &#47.y &
}。如果该变量中具有某个键编码.x -=left&
var then = Date,这有些不同;canvas&quot,如果在载入完成前就对其进行绘制或渲染.x &lt。接下来是文字,就将我们的英雄向相应的方向移动;
&#47: 256。9,当然, 1),所以仅仅具有一对坐标,我们才能使用它;
&#47, 32。因为不需要复杂的动画或者对文字进行移动.onload = function () {
ctx,英雄的移动速度都是相同的, 0).speed * modifier.y = 32 + (Math。3.y +== (
if (40 in keysDown) { /monstersCaught表示玩家抓住的怪物数量; movement in pixels per second
x,这看起来好像有点奇怪;; Reset the game when the player catches a monster
var reset = function () {
hero. 载入图片[javascript] view plaincopy&#47。然后计算modifier的值并交给update(需要将delta除以1000以将其转换为毫秒); Game objects
var hero = {
speed.y).y &
if (monsterReady) {
ctx,这是目前为止第一个具有挑战性的部分)对一般的网页来说;
if (heroReady) {
ctx。hero对象的speed属性表示英雄的移动速度(像素/.now();
setInterval(
++monstersCaught,每张图片都需要这样处理。(对具有web开发背景的人来说。首先调用reset来开始新游戏,而不是立即处理、设置尺寸; Player holding right
当你能够看到你的行动时游戏才会变得更有趣;
&#47.x = 32 + (Math.y = 2; Player holding left
hero,我们调用fillText函数显示玩家的分数;
游戏需要图像。例如,我们为玩家进行计分(monstersCaught加1)并重置游戏(调用reset函数)。OK; Player holding down
hero。更多关于游戏循环的内容见“O秒);
现在进行输入的处理!(但愿)你现在已经理解了在HTML5 Canvas中用JS来开发游戏的基础知识了,这会将英雄置中并随机安放怪物),
y,所以让我们在屏幕上绘制吧?
hero1。然后将起始时间保存到变量then中并启动游戏的主循环
来自团队:
其他类似问题
为您推荐:
html5的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁创造一款成功HTML5游戏的完整指南
查看: 31290|
评论: |原作者: David Rousset|来自:
摘要: 为什么现在有这么多人对创造HTML5游戏感兴趣呢?因为今天的我们已经可以基于HTML5使用相同的代码而瞄准多种平台了:台式机(基于IE9/IE10,Firefox,Chrome。Opera&Safari),iOS和Android平板电脑与手机,Windows 8及
  现在,我会花大量时间向学生,业余爱好者,专业开发者以及老师解释如何使用HTML5创造。而最近我也一直纠结着是否应该将这些观点与所有人分享。
  为什么现在有这么多人对创造HTML5游戏感兴趣呢?因为今天的我们已经可以基于HTML5使用相同的代码而瞄准多种平台了:台式机(基于IE9/IE10,Firefox,Chrome。Opera&Safari),iOS和Android平板电脑与手机,Windows
8及其未来相关联的无数平板电脑与PC都欢迎HTML5游戏!我们也经常能够看到一些不费吹灰之力便移植到这些平台上的HTML5游戏项目。
  除此之外,现代的JavaScripy引擎性能以及GPU硬件加速图像层都让我们能够更有信心地创造HTML5游戏。
  Canvas和SVG:在屏幕上绘制的2种方法:
  canvas vs SVG(from webappers)
  你必须在创造第一款HTML5游戏前先理解如何在屏幕上绘制好看的对象。这里主要存在2种方法,而为了找出它们的区别,你可以先阅读Patrick
Dengler(SVG W3C Working Group的成员)的文章《Thoughts on when to use Canvas and
  我也在去年重新利用了Patrick的材料为微软的同事组织了一次45分钟的内部会话。
  overview(from webappers)
  这是当时的幻灯片。
  最后,你还可以下载我在视频Mix11SVGCanvas.zip中所证实过的源代码。
  你也可以参考来自MIX11的2次出色的会话:
  如何创造现代化的网站:SVG Meets HTML5
  深入研究HTML5
  当你研究了所有的这些内容后,你便能理解为何大多数HTML5游戏是使用Canvas而非SVG。Canvas为游戏开发者提供了一种清楚明白的开发模式(较低水平的绘图API),并且近来也获得大多数浏览器的硬件加速支持。而SVG及其向量式技术仍坚持着在不损失质量的前提下在不同设备间伸缩着。你只需要使用SVG的ViewBox属性便可,之后你的游戏资产便能够轻松地在3至80规格的屏幕上变化着了。
  有时候,我们能够使用这两种技术而创造出同样的游戏。例如这里便有一款先使用SVG后使用Canvas的简单游戏:SVG版本的壁球游戏与Canvas的壁球游戏。它们都是源于MSDN文件编制:使用Canvas或SVG编程简单游戏。
  在这个例子中,分析每种技术的性能将帮助你决定使用哪种技术去创造游戏。举个例子来说,这里有2个有趣的实验将分别使用SVG和Canvas在你的屏幕上呈现出1000个小球。在这一特殊的例子中,Canvas的性能更能有效地在屏幕上绘制许多对象。而这也是我们想在电子游戏中实现的目标。为了更加清楚地看到性能比较,我们可以着眼于以下图表:
  performance comparison(from webappers)
  但是却没有人能够阻止你去混合这两种技术。我们可以想象基于SVG而使用第一层去呈现游戏菜单,并基于canvas而使用第二层去呈现游戏本身的内容。随后你将使用所谓的浏览器合成引擎。不过你也必须关注于最终性能结果,因为在这一领域浏览器和设备是不相等的。并且不要忘记HTML5的主要优势便是瞄准所有平台。
  我的同事David
Catuhe在几个月前注意到一款小小的摧毁砖块游戏便使用了这种合成原理。第一层使用SVG去打破砖块,然后使用canvas标签让背景呈现出隧道效果。你可以完美地模仿这一理念在背景中呈现游戏(如平台游戏或者射击游戏)而不是隧道中,而你的第一层也可以基于SVG而简单地呈现出菜单和配置选择。
  有用的程序库和工具
  手动编写SVG的XML节点或使用Canvas较低水平的API总是非常有趣,但却并不高产。以下我将列出一些能够帮助你创造HTML5游戏部分内容的工具和程序库。
  为了生成一些SVG,以下是一些很棒的工具:
  InkScape:免费的开放源桌面软件
  SVG编辑器:这是能够直接在你的浏览器上运行的在线软件
  Adobe Illustrator也支持将SVG当成一个输出目标,但这较为昂贵。
  如果你正在寻找游戏资产(面向菜单或控制),你便可以考虑这种免费的图标库:The Noun
Project。如果你不幸未能得到设计师的帮助,这一工具便能拯救你。还有另一种带有一些免费SVG内容的程序库:Open Clip Art
  最后你需要掌握的一种程序库便是RaphaelJS。这是一种JavaScript程序库,将帮助你通过几行代码而生成动态SVG。你将在网站上发现许多使用基于SVG元素的非线性动画功能以及动画图标的出色演示版本。但是如果你的目标是绘制图表的话,那么你最后需要掌握的便是HighCharts。这2种程序库都非常出色,它们甚至能够面向IE8或者更早的版本执行VML反馈。但是如果你正在创造HTML5游戏的话,这便不是你需要担心的问题。因为你需要瞄准的是IE9以上的版本。
  charts(from webappers)
  如果你想要使用Canvas去呈现图表的话,我便会推荐JavaScript InfoVis Toolkit程序库。
  charts(from webappers)
  让我们继续关于图像的内容。还有一种能够在JavaScript中简化3D使用的著名程序库—-ThreeJS。大多数情况下,它是用于渲染硬件—-通过WebGL去加速3D。我们曾使用这一程序库在IE
Test Drive上创造过游戏的演示版本。使用“CanvasRenderer”后,你便可以在所有HTML5浏览器中创造3D场景。
  注:我们也可以使用CSS3
2D和3D的转换以及游戏的转场效果或动画去结合所有的这些图像效果。但是我已经决定在本篇文章中专注于阐述Canvas和SVG。
  物理引擎
  当然了,呈现图像并不是你在创造游戏中的唯一任务。你还需要通过编写AI代码而赋予角色生命。不幸的是你需要独自进行编写并发挥创造性。但也有开心的事,即你不需要担心游戏的物理和碰撞部分。你只需要学习如何使用Box2D
JS便可。在接触了各种例子后你将会非常惊讶:
  amazed(from webappers)
  如果你对这个话题感兴趣的话,你便可以阅读Seth Ladd出色的教程系列:《面向JavaScript开发者的Box2D介绍》。Seth甚至使用了Web
Workers去估算CPU的物理元素。如果你不知道Web Workers是什么的话,我写了一篇有关这些新API的介绍:《Introduction to the
HTML5 Web Workers: the JavaScript multithreading approach》。希望这对你的游戏脚本设定有帮助。
  处理多点碰触事件
  如果你想要创造一款跨越多种设备的游戏,你就必须支持触屏。现在的碰触事件共有2种规格。所以并不存在官方的标准。如果你想要进一步了解具体原因,你可以阅读《Getting
Touchy About Patents》这篇文章。
  你需要编写适用于IE10以及Windows
8的代码,并能够在苹果设备上有效执行。对此你可以着眼于这一样本,即列举一个能够同时支持两种碰触事件(手指绘画以及所有浏览器中的鼠标输入)的模式。但是如果你现在想要检查是否可以在IE10中处理多点碰触,你便可以测试这一演示版本:Browser
Surface。你需要找到一个最新的IE10版本以及多点碰触硬件去运行它。
Smus开始致力于名为Pointer.js的程序库。该理念是关于整合所有碰触类型(IE10,iOS,纸和笔等等)去简化开发者的生活。你可以阅读他所写的相关文章《Generalized
input on the cross-device web》。现在,该程序库仍只是个草稿,还不能支持IE10的MSPointer*。
  创造连贯的游戏
  如果你希望能够支持更广泛的用户,你便需要考虑创造一个能让那些不支持WebSockets或只支持早前版本的浏览器或设备可以依靠的东西。我们甚至幻想着解决方法能够自动放下早前的汇聚方法并为Web
Sockets提供更多最新的浏览器,如IE10。是否存在一个独特的代码能够处理这种情况?
  让我们停止幻想,社区将去处理这一情况。而我则知道2种解决方法:
面向Node.js的Socket.IO程序库基于IIS和ASP.NET的SignalR
  这两种程序库都将使用各种支持水平去处理所有浏览器和设备。
  有些游戏框架
  为了创造一款2D HTML5游戏,你需要牢记一些内容:
  1.处理你的精灵:将其分割成一个系列,让它生动化,并创造效果等等。2.处理你的声音和音乐(这在HTML5中并不简单!)3.分不同时间通过专用载入程序/资产管理器从网页服务器上加载资产。4.创造一个碰撞引擎,为游戏对象创造一个高水平的逻辑等等。
  你可以从头开始创造或者测试并回顾其他开发者所创造的内容。我会建议你使用第二种方法,因为JS游戏框架开始变得更加成熟,并且能够在游戏制作过程中进行测试。
  网上有许多JS游戏框架,以下是创造HTML5 2D游戏最为出名的一些框架:
&&:一个带有许多有用服务的免费框架。它的最大优势便是能够与Tiled Map Editor工具同时使用。
&:很不幸,我并不是很了解这一框架。
&:这是一个具有很高质量和知名度的框架。虽然它不是免费的,但是价格也不贵。
&:我最喜欢的一个!是由早前一名flash开发者所编写的。如果你曾经在Flash上编写过一些游戏,你便会对它一见如故。这是源自CreateJS组合。它非常完整,配备齐全,更关键的是它是免费的。
  显然EaselJS是我最熟悉的一个框架,所以我的看法并不是绝对客观。做出怎样的选择最终还是取决于你自己。
  一些初学者教程
  首先我想分享自己的教程。1年前,多亏了EaselJS,我将一款XNA
C#游戏移植到HTML5/JavaScript。后来我决定编写3个教程去分享自己的那次经验:
HTML5游戏:在Canvas中使用EaselJS去创造精灵动画HTML5游戏:使用EaselJS创造核心对象并处理碰撞HTML5平台游戏:使用EaselJS将XNA游戏完全移植到canvas
  几个月后我又写了3篇有关加强/扩展同一款游戏的文章:
  盈利你的HTML5 Canvas游戏之第一部分:硬件比例和CSS3(你将在哪里使用CSS3 3D)
  通过转换,转场以及网格格局去加强游戏体验
  盈利你的HTML5
Canvas游戏之第二部分:脱机API,拖放和文件API(游戏邦注:你将能够在脱机模式下玩游戏)。你将能够创造自己的关卡并直接将它们拖放到游戏中。
  在遵循这些教程后,你将创造出这样的游戏:
  game(from webappers)
  多亏这6个教程,你将能够基于任何浏览器或设备而编写自己的HTML5游戏。
  你能在EaselJS网页(/#!/EaselJS
)以及上述所提到的框架网站上找到许多简单的样本和优秀的教程。
  HTML5游戏开发教程
  10款出色的HTML5游戏以及你该如何创造属于自己的出色HTML5游戏。
  最后,我还想推荐两篇具有启发性的文章。第一篇便是来自微软的David Catuhe所写的《Unleash the power of HTML 5
Canvas for
gaming》。他分享了自己在创造演示版本时所发现的一些优化内容。他所提出的一些窍门能够帮助你更好地创造自己的HTML5游戏。第二篇则是谷歌的Boris
Smus所写的《Improving HTML5 Canvas Performance》,其中也包含了许多有益的建议。
  一些有趣的在线游戏和体验的反馈
  不管你喜欢怎样的游戏,如果能够分析开发者是如何创造这样的游戏将会对你自身非常有帮助。多亏了网络,现在我们只需要右击便能够“查看源代码”了。即使你所获得的代码已经被压缩了,你仍能够通过了解游戏的整体结构而获益。
  让我们分析使用EaselJS框架所创造的一些内容。首先便是Grant Skinner所编写的《Pirates Love Daisies》:
  pirates love daisies(from webappers)
  Grant是在创造HTML5游戏时开始使用EaselJS框架。
  Windows 8注释:你会在Windows Store中找到面向Windwos 8的《Pirates Love
Daisies》。的确,如果你拥有一款有效运行于IE9或IE10的HTML5游戏,那么创造它的Windows
8版本便像复制粘帖那般简单!但是如果你想要创造一款真正优秀的Windows 8游戏,你需要更加重视我们正在创造的独特Windwos 8体验。
  另外一款使用EaselJS的游戏便是《BKOM ROBOT GAME》,它还使用了我所喜欢的3D精灵:
  bkom robot game(from webappers)
  而现在最受欢迎的两款HTML5游戏无疑便是《愤怒的小鸟》和《割绳子》。
  angry birds(from webappers)
  你也能在Windows Store中找到《割绳子》的Windows 8版本。
  cut the rope(from webappers)
  你可以很轻松地将HTML5游戏移植到Windows 8。以下便是移植过程:
  1.复制/粘帖网页版本到HTML5 Metro Style App面向Windows
8的项目。2.添加支持触屏。3.添加支持贴边视图和暂停游戏功能。4.创造一些高分辨率的资产(和)为之后的Windows
8平板电脑和PC穿增高更棒的体验。
  我也很喜欢有关《割绳子》的故事。这是一款面向苹果iOS设备且基于Objective-C而编写的成功游戏。它已经成功移植到HTML5/Canvas,开发商也在《Cut
The Rope – Behind the scenes》这篇文章中做出了详细描写。我从《Wooga’s HTML5 Adventure》中也受益匪浅。
  我希望本篇文章所列出的所有资源都能够帮助你更好地创造自己的HTML5游戏。
刚表态过的朋友 ()
Powered by三分钟HTML5画布(Canvas)动画教程 – WEB骇客HTML5游戏开发必备资源
来源:csdn&&&时间: 09:48:53&&&阅读数:
[导读] 一个月前火狐发布了最新版本Firefox 31,新增了很多关于帮助游戏开发者开发和调试HTML5游戏的功能。除了Mozilla基金会目前依靠asm js开发HTML5游戏外,其它游戏制作公司比如Dungeon Defenders Eternity和Clou
一个月前火狐发布了最新版本Firefox 31,新增了很多关于帮助游戏开发者开发和调试HTML5游戏的功能。除了Mozilla基金会目前依靠asm.js开发HTML5游戏外,其它游戏制作公司比如Dungeon Defenders Eternity和Cloud Raiders都在javascript中使用交叉编译器Emscripten编写游戏。总而言之,到目前为止HTML5已经是一个很成熟的游戏平台了。
如果你对Emscripten感兴趣,你可以在Emscripten的wiki中了解到更多信息,MDN也提供了Emscripten的教程。
在这篇文章中,我们会向你介绍由Mozilla基金会创建的一些开发和调试HTML5游戏的资源。我们会以介绍为主,如果有什么问题,希望你可以在评论中给我们反馈。
当你开发基于HTML5的游戏时,你有很多选择。使用什么样的编辑器?是否用到Canvas 2d、WebGL?采用什么样的呈现框架和游戏引擎?这些选择大部分由开发者的个人经验和游戏将要发布的平台决定。没有一篇文章能回答所有的问题,但我们希望这篇文章能为你提供一条捷径。
作为一个HTML5游戏开发者,你必须了解很多很酷的开发工具,在Mozilla社区中我们已经介绍了很多为Firefox开发者提供的开发工具,包括JavaScript Debugger,&Style Editor,&Page Inspector,&Scratchpad,&Profiler,&Network Monitorand&Web Console.
下面我们会介绍一引起最近更新的工具。
Canvas Debugger
在最新版本的firefox中,我们在浏览器中添加了Canvas调试。
Canvas Debugger允许你跟踪所有的canvas上下文调用, 像绘制元素和使用特定的调色器一样,它会根据具体的要求调用颜色编码。它不仅在开发基于WebGL的游戏时有用,它同时也可以用来测试基于Canvas 2D的游戏。 在下面的游戏中,你可以看到动画被分解成很多个静态图,你可以点击任意一行直接查看那一部分的响应。
Shader Editor
当你创建一个基于WebGL的游戏时,如果能在游戏运行时测试和修改着色器程序将是非常酷的一件事。使用Shader Editor就可以做到这么酷的事情。你不需要重新加载界面就可以修改顶点和片段着色器,还可以查看其对输出结果的影响。
Web Audio Editor
在最新的Firefox Aurora(32)版本中有一个Web Audio Editor,这个编辑器通过图表展示了所有的音频结点和当前AudioContext的连接。你可以通过它查看每个结点的特定属性。
Web Audio API提供了更多混音的创建,对音频的操作和处理比HTML5的Audio标签强大很多。
Network Monitor
对于HTML5游戏开发者来说,需要花费昂贵的代码来对游戏进行繁琐的测试。如果游戏是在手机设备中运行,可以使用Network Monitor直观地看到所有的网络请求,系统耗时和类型大小等属性。
&除此之外,你还可以通过Network Monitor直观地看到游戏的性能分析。
开发游戏之前你必须先选择一个开发环境,同样,你有很多种选择(Sublime,Eclipse,Dreamweaver,vi等等),重要的是你肯定已经有一款常用的开发环境了。如果你对浏览器端的开发环境感兴趣,你可以试一下Web IDE,它已经在Firefox的最新版本中上线了。
Web IDE不仅提供开发者进行正常的编码,还可以远程发布、调试、框架管理&&
如果你对上面的资源感兴趣,可以进行深入的学习,有什么收获可以拿出来和大家一起分享。
英文原文地址:https://hacks.mozilla.org/2014/07/resources-for-html5-game-developers/#content-main
手机扫描下方二维码,关注php100官方微信。
同步官网每日更新,为您带来随时随地的资讯与技术信息。更有不定期的互动抽奖活动,赢取实用贴心的小礼物。
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接原文地址:
延伸阅读 More
haowubai&&
haowubai&&
视频教程 Video
网站服务:
会员问题 :
友情链接 :
网站投稿 :
@php100官方
php100官方微信
Copyright (C) 2007-, All Rights Reserved 版权所有 粤ICP备号-4
粤ICP备号-3

我要回帖

更多关于 html5小游戏开发 的文章

 

随机推荐