在SF上建立项目后我自己都很怀疑是否会对该项目进行更新。最近有些闲,于是对crystal-cursor进行了第一次更新,对项目进行了少量的完善,并增加了一个新的效果。我给这个新的鼠标效果取了个中文名字“绚彩萤火”。
在程序修改后,打算将代码更新到SF的CVS上,却一直timeout。开始以为是代理的原因,于是花了一堆的时间学习如何给CVS设置代理。在设置代理后问题依旧。无奈之下重新看了一遍SF上的CVS使用说明,发现CVS服务器地址已经变了。想起前些天SF发的通知邮件,于是再去翻阅了一下,里面说的正是此事。在更新代码后本想发布个新版本,文件发布系统又有问题了,找了半天没找到incoming文件夹。难道是我RPWT?不知道还有没有那位兄台在用SF的管理平台,得咨询一下。
在对crystal-cursor进行修改的时候遇到了一些问题。首先就是delphi的接口。虽说delphi中的接口是自行管理对象的生命周期,但在有些情况下似乎并不是那么灵光。在crystal-cursor中我采用观察者模式来将鼠标位置的变化情况通知各个子窗口。理论上只要我将子窗口从观察者列表中移除,窗口就该释放,但事实并不是如此。关于这个问题,在网上有见到相关的介绍《接口小论》。
为了让子窗口交替出现,我需要让一个子窗口建立后先sleep在进行下一个窗口的创建,但sleep会导致主线程的阻塞,无法达到预期效果。于是我增加了一个NoBreakSleep函数。这个函数虽然简单,但效果似乎还不算太烂。
procedure NoBreakSleep(aInterval: Integer);
var
StartTime: TDateTime;
begin
StartTime := Now;
while ((now-StartTime)*24.0*60.0*60.0*1000.0) < aInterval do
begin
Sleep(1);
Application.ProcessMessages;
end;
end;
PS:
发现真是自己的RPWT。刚才一直都是用WinSCP登陆。用WinSCP登陆是更新web站点用的。发布文件直接用FTP上去就可以了。真是太大意了。
发布文件已经更新上去了,大家可以到我的项目站点去看看crystal-cursor。