阅读更多

10顶
0踩

Web前端

原创新闻 GameJS:超酷的Canvas游戏库

2008-10-29 15:14 by 资深编辑 ╱/罒呍唲 评论(8) 有18362人浏览
Tommy Maintz创建了一个有趣的项目,称为GameJS 的一个2D游戏开发框架,使用JavaScript和Canvas。使用GameJS这个超酷的Canvas游戏库,能写出优秀的基于Canvas的游戏。

API

GameJS.framework.Game-创建游戏时主要的游戏类扩展,你可以重写它的方法:初始化,载入,更新和利用。这类似于XNA框架。Tetris.js就是一个很好的例子 —如何继承这一类。

GameJS.content.ContentManager -主要处理异步加载,节省资源,解决了让您头痛的问题。下面的代码可以让一个新的纹理写入游戏的draw()方法:
loadContent: function() {

    // set the screen rect

    this.screenRect = new Rectangle(

        0, 0,

        this.screenWidth,

        this.screenHeight

    );

 

    // Create the background texture. The third argument argument

    // makes this texture is not redrawn every frame (gives

    // performance boost since the background doesn't change)

    this.backgroundTexture = new Texture(

        this.graphics,

        this.content.load('Textures/BackgroundTexture.png'),

        false

    );

GameJS.graphics.GraphicsDevice -这个文件设置主要的canvas。它还负责管理缓冲。并且还拥有一个可以创造新的资源范围的方法。您还可以轻松的改变它的属性。一个简单的例子:
constructor: function() {

    var ds = this.graphics.deviceSettings;

 

    ds.screenWidth = this.screenWidth;

    ds.screenHeight = this.screenHeight;

    ds.target = document.getElementById('tetris-container');

    ds.fullScreen = false;

    ds.applyChanges();


GameJS.graphics.SpriteBatch -这个类作为一个封面来包装canvas的元素。他有一个方法可以允许您为图形设备绘制纹理。代码示例:
draw: function(gameTime) {

    // clear the device

    this.graphics.graphicsDevice.clear();

 

    var spriteBatch = new GameJS.graphics.SpriteBatch(this.graphics);

    spriteBatch.begin();

 

    // Draw the background

    spriteBatch.draw(this.backgroundTexture, this.screenRect);

 

    // Draw the gamefield.

    spriteBatch.draw(this.gameFieldTexture, this.gameFieldRect);


GameJS.input.KeyboardGameJS.input.KeyboardState -这些类处理键盘的输入。由于JavaScript是一种基于事件的语言而且游戏的周期应该是连续下去的,这个框架主要负责存储按键,就像以下这样:
update: function(gameTime) {

    // Get the current input state.

    var keyboardState = this.keyboard.getState();

    if(this.isGamePaused) {

        if (keyboardState.isKeyPressed(Keys.ENTER)) {

            this.isGamePaused = false;

        }

    }


你不能在没有游戏的情况下建立一个游戏的框架,Tommy创建了Jetris 俄罗斯方块的游戏,推荐点击这里进入查看游戏效果。


来自: ajaxian.com
10
0
评论 共 8 条 请登录后发表评论
8 楼 elmar 2008-11-02 21:22
Chrome玩起来很顺畅啊
7 楼 elmar 2008-11-01 14:39
Chrome玩起来很顺畅啊
6 楼 javapro 2008-10-30 18:05
很不錯啊..
5 楼 rmn190 2008-10-30 08:17
占内存太多了,100%
4 楼 rmn190 2008-10-30 08:16
不错,以后不必用Java这样的语言来玩那些小游戏了, 用JavaScript即写即看.
3 楼 Julien 2008-10-29 20:49
Canvas的缺陷:无法在canvas上写字,所有的canvas单元都没有mousemove,mouseclick之类的事件可以编程,只能楞画楞刷新
vml倒是什么都有,但是CPU占用率,图元稍微多点就100%
2 楼 稻香麦甜 2008-10-29 18:04
呵呵 我的IE6 没问题呀
1 楼 fanlei77 2008-10-29 16:41
IE6一进去报错,“例外被抛出且未被接住”,这个错误我还是第一次见到,百度查查,哇哈哈

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • ISAPI测试/调试工具

    不带源码 用于ISAPI/WebService程序调试 最近在写ISAPI,发现调试N麻烦,在Google找了一堆资料,调试未果,所以写了个简单的测试工具。share给大家 具体说明请查看readme.txt

  • 轻松调试isapi (环境IIS6.0 WIN2K3 VS2003)

    最近有需要要调试一个ISAPI DLL,在网上查了点资料如:how to debug ISAPI DLLs in IIS 4.0, IIS 5.0, IIS 5.1, and IIS 6.0How to debug ISAPI DLLs in IIS 4.0, IIS 5.0, IIS 5.1, and IIS 6.0) 地址在:http://support.microsoft.com/kb/18

  • delphi在window10下用uniGUI开发isapi的调试方法

    好久没有用delphi了,有个老同事还在持续使用新的Delphi,用到10.3版本了。他说我原来写的Acroprise Multi-Language Suite多语言元件,在用uniGUI元件开发web程序时,standalone下32bit和64bit都没有问题,在isapi下32bit没问题,但是64bit有报错,web界面出不来。 我准备了开发环境:windows 10,delphi 10.3,uniGUI 1.90。 standalone下,AcroMulti在32bit和64bit确实没问题。

  • w3wp调试ISAPI程序

    ISAPI调试方法,非MFC。(OS:2003)1、在项目调试项中的命令行中输入w3wp.exe的绝对路径,例:C:/WINDOWS/system32/inetsrv/w3wp.exe2、命令参数中输入:-debug3、2003下需要停止w3svc服务,可以在命令行下使用 net stop w3svc4、启动ISAPI程序,会弹出一个对话框....5、在浏览器中输入网址,访问该ISAPI程序,打断

  • II6.0轻松调试Isapi

    教你如何在windows xp windows 2003轻松调试Isapi

  • 用Web App Debugger简单调试ISAPI

    以isapi为例:       1、新建一个project,用isapi/nsapi;       2、remove这个project中所有的unit;       3、加进你用Web App Debugger调试出来的工程的unit ;           (千万注意:不要把有form的unit加进去,不然不能运行)       4、建一

  • ISAPI开发手册

    ISAPI开发手册,对有志于开发ISA、IIS ISAPI Filter的同志还是很有参考意义的。

  • ISAPI调试工具

    win9x用pws调试,不错,简单明了 win2000 iis5.0调试,调试方法也被我摸出来,直接启动c:\windows\system32\dllhost.exe,参数是/ProcessID:{61F35DA6-1B16-41F6-A136-547210577537}(具体ID从应用池中属性中可以查看到).或者用delphi 2007附加到iis进程里,这个办法笨一点,iis容易死掉. win2003 iis6.0与windows vista/7 iis7.0一起来就是多进程的,进程好象是复制出来的,启动的isapi在哪个进程里都不知道,没办法了吧?如果有办法的话告诉我一下. 好,哪就自己写一个支持iaspi的web服务吧.东拼西凑,把能拿来的代码都借用一下,终于完成了.共享给大家用用. 使用说明: 在delphi运行调试参数里填入本软件所在路径,开始调试运行,在本软件界面里把web目录指定一下.如果有多个虚拟目录可以全部直接写上.然后在ie里输入访问地址就搞定了,dll被调起了,断点起作用了吧.什么iis,apache走吧,不需要你们了.

  • 在win2k3+iis6中调试isapi filter及isapi extension的方法

    iis6 + win2k3中调试isapi filter和extension的方法1.首先,编写代码,并编译成*.dll,留在debug/目录下(或任意目录)2.设置*.dll的访问权限,一般需加上user权限3.在iis测试站点下指定filter为[1]中路径,或指定待测的extension路径4.停止iis服务,在cmd中执行net stop w3svc5.在vs中更改该项目的启动命令为w3w

  • 海康摄像机快速设置工具(ISAPI工具).zip

    海康摄像机ISAPI配置工具(修改码率)可配合官方批量配置工具 单一摄像机使用方法:登录 后会自动分析,修改参数后 点设置摄像机 完成 设置的参数不能高于当前摄像机的参数值,特殊机型不一定能修改 批量修改:按添加要修改的摄像机IP,全选摄像机,点ISAPI协议配置, 用上面的工具可以生成模板文件(IPC_XML_模板.XML), 可以导入文件(IPC_XML_模板.XML) 或者手动输入XML(生成模板后,直接点复制参数) URL 填写 (点上面软件复制命令,粘贴到这里) 然后官方工具自动修改

  • 在VC环境中调试ISAPI程序

    转自:http://vivobear.blog.163.com/blog/static/37485108200971734353603/公司现在还要维护一个N年前的ISAPI的程序,调试起来那个麻烦啊,死活断点进不去,折腾了半天,google了半天最后总算是找到问题了,原来是没有把IIS的 Application protection 设置为 Low (IIS process)。 今天特意

  • 在Windows 7环境下使用dos命令安装.Net 4.0 及ISAPI和CGI限制配置

    1.在Windows的menu搜索框中输入cmd并按回车键 2.出现cmd.exe后用鼠标右键点击该图标点击以管理员权限运行调转到dos窗口 运行的结果如下 3.复制 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319  到dos窗口并按回车键 4.接上一步之后复制 aspnet_regiis.exe -i 到dos

Global site tag (gtag.js) - Google Analytics