改用 Android 之后

最近,终于把用了5年的Nokia 6030换成了Moto Defy,从功能机转换到了智能机,按某人的话说就是“终于符合一个Geek的身份了”。之前一直是6030配合一台iPod touch 2在用,出门的时候要放两台机器在口袋里,估计过一段时间就可以用一个Android完全取代了。

同时使用iOS设备和Android设备,必然会在这两者之间有一些对比,一起来看一看吧。 继续阅读“改用 Android 之后”

使用 Shell_NotifyIcon 的两点注意

1. 建立结构体的时候:


NOTIFYICONDATA m_notifyData;
m_notifyData.cbSize = sizeof(NOTIFYICONDATA );

很多例子都是这么写 cbSize 的,但是一旦使用了 VS 2008 或者更高版本,你会发现这样的系统托盘图标在 XP 系统上无法弹出气泡提示,其实 cbSize 像下面这样赋值

m_notifyData.cbSize = NOTIFYICONDATA_V2_SIZE;

NOTIFYICONDATA_V2_SIZE 是 XP 可以接受的,当然这样做可能会丢失一些高级功能。

2. 处理点击托盘图标弹出菜单的时候:

继续阅读“使用 Shell_NotifyIcon 的两点注意”

Behind Tetris5 – Game UI

介绍完了游戏部分,再来看看整个游戏界面部分的实现。整个游戏界面全部实现于一个页面之中,通过画面切换显示不同的功能。界面示意图如下:

ui

界面切换时,通过调整div#cubeReel的left值,显示出不同的功能页。滚动动画效果通过jQuery的animate函数实现。
界面上的所有按钮样式均是通过CSS3实现,部分样式如下:

button {
/* ... */
border-radius: 2px;
box-shadow: 1px 1px 2px #ccc;
-moz-transition-property: border-color,color;
-moz-transition-duration: 0.3s;
}
button:hover, button.hover {
/* ... */
-moz-transition-property: border-color,color;
-moz-transition-duration: 0.3s;
}
button:active {
box-shadow: 1px 1px 1px #ccc inset;
}

border-radius属性实现了按钮的圆角。box-shadow属性实现了阴影,按钮在一般状态下使用的外阴影,在按下状态时使用了内阴影(inset)。transition的应用使按钮在鼠标移入(hover)和移出时有渐变效果,示例代码只展示了Gecko所使用的-moz前缀的transition属性,不同的浏览器对transition的实现程度不同,-webkit、-o和-ms前缀的transition属性分别是WebKit、Opera和Internet Explorer的实现。

背景音乐则使用了HTML5中新的JavaScript对象Audio,它可以播放浏览器支持的音乐文件。使用方法类似于原来的Image对象:

继续阅读“Behind Tetris5 – Game UI”

Behind Tetris5 – Game Core

Tetris5的游戏逻辑核心移植自本科的一个J2ME课程设计,基于性能方面的考虑,使用该核心设计的手机版俄罗斯方块可以在手机上流畅运行,那么移植到JavaScript上的性能将会有保证,并且毕竟JavaScript和Java还是有一些联系,从Java移植的难度也相对较小。JavaScript和Java都是面向对象的编程语言,但是它们在对象的实现方法上还是有一些不同。Tetris5主要使用了两种对象定义方法:函数对象和单次对象。函数对象的定义和使用方法例如下面的例子(Block.js):

var Pos = function () {
this.x = 0;
this.y = 0;
};

var Block = function (type, initPos) {
this.blockType = type;
this.pos = new Pos(); // 使用之前定义的Pos对象
this.pos.x = initPos.x;
this.pos.y = initPos.y;
this.style = 0;
// ...
this.Down = function() {
this.pos.y--;
return this.pos;
};
// ...
};

这种定义可以创建多个函数实例,在不同的场合使用。所以像位置和块对象采用了这种方法,它们在游戏进行的过程中会被多次创建和销毁。

继续阅读“Behind Tetris5 – Game Core”

Behind Tetris5 – Basic

Tetris5是一个使用HTML5和JavaScript技术实现的俄罗斯方块游戏。俄罗斯方块是前苏联科学家阿列克谢·帕基特诺夫(Алексей Леонидович Пажитнов)在1984年6月发明的,具有数学性和动态性,是实现常见的游戏实现示例。HTML5是HTML下一个的主要修订版本,现在仍处于草案阶段。她的目标是取代1999年所定订的HTML 4.01XHTML 1.0 标准,在互联网应用迅速发展的时候,使HTML的表达能力达到当代的网络需求。Tetris5基于的HTML5技术不只是狭义上的使用HTML5标签(tag),而是广义上使用HTML5提供的各种新特性,结合CSS3和JavaScript编写网络应用的一种新方法。

HTML5是目前正在开发过程中的新一代HTML标准,虽然没有最终定案,但是像Mozilla Gecko引擎、WebkitOpera新版IE都引进部分实现了该标准。HTML5为网络应用开发带来了许多新特性,在HTML的层面上,增加了一些新的标签(tag):

继续阅读“Behind Tetris5 – Basic”

Tetris5 基于 HTML5 的俄罗斯方块

http://www.sunjw.us/tetris5

基于 HTML5 技术,完全使用 Javascript 编写的俄罗斯方块游戏。

菜单支持快捷键,游戏控制:上下左右、ASDW,X,或者用鼠标点击控制。

也可以在 iPhone Safari 或者 Android 手机上玩。

游戏编写内幕稍后奉上。

tetris5-1

tetris5-2

tetris5-3

Google Logo 弹吉他,今天还想玩怎么办

Google Logo 弹吉他使大家陷入了疯狂,不过只能玩24小时,今天已经更换回了普通的 Logo。

幸好阿呆同学用其超强力的技术将它保存了下来,试玩地址:

http://www.topfun.us/google-guitar/google-guitar.htm

其博客上还有高清自爆写真,欢迎围观。

落幕

昨晚英超 10/11 赛季收官战结束了,我魔终于在老特拉福德举起了第19座冠军奖杯。

昨晚欧文终于得到了梦寐以求的英超冠军奖牌,赛后说到:“As they say, if you can’t beat them, join them…”不知道此时利物浦的杰拉德还有一大群KOP们是什么感受。欧文在98年世界杯的长途奔袭一举成名,一晃13年过去了,转战过皇马、纽卡斯尔,最终来到原来的死敌曼联。在职业生涯的最后一个赛季,终于完成了夺冠的心愿,明年我们应该不会再看到欧文飘逸的身影了。

其实欧文的成名作中,仔细看视频,你会发现有另一个英格兰球员一直在旁边跑动,他有着和欧文一样的速度,对他是当时的斯科尔斯,卡佩罗一直请不动的中场发动机。这场也有可能是斯科尔斯的最后一场英超。

从大约是2000年开始看球,看着吉格斯从一个边路的突击手逐渐成为中路组织者,看着斯科尔斯的前后跑动逐渐变成中场的调度,看着约克到范尼再到C罗,熟悉的球员都渐渐老去,从暴力型逐渐转向技术型。再看看龟喜欢的AC米兰:因扎吉、内斯塔、皮尔洛,老鳖喜爱的托蒂,这些名字以后不再出现在赛场上。球场上的艺术家少了,C罗梅西这种超人多了。

其实值得纪念的不仅仅是这些球员,还有我们当年的一起讨论足球的日子。