Tag Archives: framework

[翻译]6款用于在线游戏的基于 Html5 的 Javascript 游戏开发框架

原文在此:http://www.web-delicious.com/5-html5-javascript-game-development-frameworks-for-online-game-developers/

六款游戏引擎/框架都是好东西。Akihabara 我之前翻译的系列教程Akihabara指南里有介绍。而单从介绍和各引擎网站上来看,我对 Rocket 引擎还是很有期待的。

1. Gamequery – 用于 jQuery 的 Javascript 游戏引擎

GameQueryjQuery插件,可帮助 javascript 游戏开发者更加容易的添加游戏相关的类。它还处于开发的初期,并且在将来的版本中可能会有许多变化。项目托管于 GitHub (它之前是托管在 Google Code 的),你可以在这个 twitter 页面 关注每日的开发进度。

TurboGears 学习笔记-控制器

这部分内容虽然不多,但是看了好多天。

在 tgadmin 自动生成的 appname/appname/controller.py 中有如下代码:

1 import turbogears as tg
2 from turbogears import controllers, expose, flash
3 from cherrypy import request
4 # from sandbox import model
5 # import logging
6 # log = logging.getLogger(“sandbox.controllers”)
7
8 class Root(controllers.RootController):
9 @expose(template=sandbox.templates.welcome)
10 def index(self):
11 import time
12 # log.debug(“Happy TurboGears Controller Responding For Duty”)
13 flash(Your application is now running)
14 return dict(now=time.ctime())

Root.index 是 http://127.0.0.1:8080/index 的控制器。如果需要添加新的“页面”,只要在 Root 中添加新的方法即可:

16 @expose()
17 def foobar(self):
18 return Just another page

@expose() 是一定要加的,不加这个,无法定位控制器的方法。

我这里没有添加 template,所以框架将返回的内容直接作为字符串输出在页面上了。

如果想使用模板(默认为Kid),则指定模板名称 template=”appname.appname.foobar”,这个对应的是项目根开始的目录和模板文件名的结构。实际模板应保存在 appname/appname/foobar.kid 文件中。

控制器通过 expose 出来的方法的参数获得浏览器传递过来的变量,对上面的方法稍加改造即可:

16 @expose()
17 def foobar(self, *args, **kv):
18 if (kv.has_key(name)):
19 name = kv[name]
20 else:
21 name = unknown
22 return Your name is + name

当访问 http://127.0.0.1:8080/foobar 时,页面显示 Your name is unknown。当访问 http://127.0.0.1:8080/foobar?name=fool 时,页面显示 Your name is fool。

当提供一个名为 default 的方法 expose 时,所有未定义的访问都会转到这个方法上去。这时,args 参数包含了访问所用的名字。例如访问 http://127.0.0.1:8080/barfoo,而 barfoo 未定义,那么default 方法被调用。同时 args[0] = “barfoo“。

好像控制器最基本的使用就这么些东西了,有点类似 Zend Framework 的 Controller->Action 的形式,仅仅是形式。