本文纯粹是笔记,记下来怕忘了
1、终止当前操作,一般情况下是用exit,但用了Exit后无法看到trace的内容。所以要采用Yii::app()->end();
2、createUrl和createAbsoluteUrl,这两个函数,如果需要宣传自己的网址和内容,还是用createAbsoluteUrl函数吧。里面带了全部路径,而CreateUrl只会显示/home/xxx这样的路径,不利于SEO
3、widget默认的render无法使用theme中的模版,于是写一个类继承自CWidget,然后所有的widget都继承这个类,比如我这样实现了。。
PHP代码
- class Widget extends CWidget{
- private static $_viewPaths;
-
-
-
- public function getViewPath($checkTheme=false)
- {
- $className=get_class($this);
- if(isset(self::$_viewPaths[$className]))
- return self::$_viewPaths[$className];
- else
- {
- if($checkTheme && ($theme=Yii::app()->getTheme())!==null){
- return self::$_viewPaths[$className] = $theme->getBasePath().DIRECTORY_SEPARATOR."widgets"; //这是我自己的路径
- }
- $class=new ReflectionClass($className);
- return self::$_viewPaths[$className]=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
- }
- }
- }
覆写父类方法,使得getViewPath找到我指定的目录,我目录在themes/classic/下建了一个widgets的目录。这样的好处很多。。而且对于CSS和JS等路径都可以和标准视图一致
先写这么多。。。
自从canvas越来越被大多数人接受后,基于它的游戏也越来越多了。。。
而这个,居然没用canvas也能实现这样的效果,看这里:http://www.cnblogs.com/Random/archive/2011/04/11/2011962.html
作者这么说了:
继 《天机》 之后,这次又山寨了个名为《街斗霸主》的经典格式游戏《街头霸王》的模仿版Demo,花了几个月的业余时间写了这么个东西,算是对目前的技术学习的一种练习吧。
其实这种练习的结果不是很重要,主要是体会其中的过程,虽然大部分的时间是在痛苦中渡过,但也是有很多收获的,同时也暴露出很多技术方面的不足,也为以后的学习明确了一些目标。
技术方面因为考虑到大部分IE用户(而且是非IE9),所以没有用HTML5的canvas,用的div的方式处理的,这样挑战也相对大了一些,
不过确实,性能上还是不理想,IE下的表现还是比较糟糕(特别是IE6。。。恩。。。- -!)。
目前兼容IE6/7/8(理论上也兼容IE9,只是没有测试),safari,FF3.5+(因为FF2.0/3.0不支持水平翻转的样式。。- -!),Chrome,Opera。
自己写了一个小型框架,包括了开发流程和js类库,类库用了OOP Like的方式包了个语法糖衣,看上去还算是像个OOP的样子,不过因为为了追求“优雅”,直接扩展了function的prototype,所以不建议在其它地方使用。
框架开发的整体思路就是用PHP作后端代码合并输出,js代码里用$import去建立了各个代码文件之间的关系,然后页面引用合并js的PHP文件,该模式需要在本地建立一个web服务器才能作测试,并且需要设置hosts为 127.0.0.1 aralork
游戏说明
游戏是一个Demo版本,实现了核心的整体流程。游戏分为“单人游戏”模式、“双人对战”模式和“练习模式”三种玩法,不过其实实现都是一样,只是改改初始化的参数而已,挺坑爹的。。。
游戏只需要键盘操作,不需要鼠标,
菜单的操作是方向键移动,Enter键选择,ESC键取消;
玩家1的操作:
上:W,下:S,左:A,右:D,拳:J / K / L,腿:U / I / O
玩家2的操作:
上:↑,下:↓,左:←,右:→,拳:小键盘 1 / 2 / 3,腿:小键盘 4 / 5 / 6
这里的 ↑ ↓ ← → 代表方向键。
游戏演示地址
完整源代码下载