残酷の青春

journey continues

28  09 2008

放假了

今年最后一个假期,一年又溜溜过去了


22  09 2008

我又开始读书了……

最近忽然想读书,因为发现自己除了电脑以外的事情几乎都不关心了,读书也许是一个好的开始。

小时候也曾强迫自己读过一些世界名著,比如简爱,傲慢与偏见,红与黑,基督山伯爵,雾都孤儿等等,但实在的说,我和这些书之间不光有文化的鸿沟也有历史的隔阂,实在不是很能读下去,甚至学英语的时候还看了因为版的苔丝,现在情节都忘了,当时真不知道怎么看下去的。

按类别而言,除了中学时候看武侠小说比较多,就是对冒险、破案一类的感兴趣了,曾经在图书馆借到一本侦探小说,情节忘了,但记得每一个章节标题都是几点几分在什么地方,现在回想起就是电视剧24小时啊。另外也看过如指环王之类的书,特没意思,真不如看电影,我不明白为什么到了20世纪写的书还用中古式的语言,可能人家就要这个效果,但文字实在枯燥,我想如果没有电影和大量龙与地下城的游戏以此书作为骨架,那我永远也不会去读。

我也从来没读过王朔或者贾平凹之类的书,中学的时候评书时段有过白鹿原之类的广播剧,但是当时的我不会对这些感兴趣吧,也许现在也不会。也许应该找几本王朔的书看看?至少挺贫的。

总之我不是个很爱读书的人,因为觉得大部分文字都是在卖弄文字而已,看过王小波的黄金、青铜时代等等,虽然有些部分很有趣,但是我觉得他的思维有些时候就像在絮絮叨叨,就像读技术一类的书,有时候思想不在书上走神的时候,一个一个字还是映入眼帘,但是读了好几页,没感觉到一点意思,只好返回去再读一遍。

刚刚看完的一本是《自杀俱乐部》,看了这么多欧美的电影电视剧之后,其实在我们这个年代,文化的区别已经不是很大了,就像在看friends的时候,会感觉这事也有可能发生在自己身边,大家吃的东西差不多,看的东西差不多,穿的也差不多,那从文化上也就不难理解。为啥选这本书,其实不是我有自杀倾向,只是在豆瓣上随便看了几本书的书评,作为起点我想还是先选本畅销书读吧。书里讲的是4个人在圣诞夜因为不同的事跑到一个自杀圣地准备跳楼的时候遇见了,然后发生了一堆事,4个人没什么共同点,在一起一般就是互相挤兑和揭疮疤,最后他们都不想死了,但是书里并没有写他们也想要活下去,不想死意味着要找到活下去的方式。有些段落也让我感觉有同感,但是其中每一个人都不是我,也可能有一些我,书里有个没名的人(叫“没狗”,意思是什么我也很晕,大概是因为他讲了一段理论,有狗的人和有狗不带狗的人,在不同时刻其实不是一个人,名字是没有意义的,因为有了名字你就会变成那个名字的产物)说自杀其实很一般,每个人都应该试试,我想也对,试试是指去用自杀的心态去想一下求生的欲望,也许一些事就可以淡然了。书的扉页上写着某人的话:解决一切不幸的方法就是幸福,或者书里一个角色马丁说的,人之所以会感到悲哀,是因为内省的太多,时时刻刻想到自己做错的那些事,而长吁短叹,反省是不错,但是简单一点会更直接。书的翻译水平一般,虽然里面用了“我靠”,“操你妈”,“傻逼”等中式骂,但是味儿还是英国的,并不是说译者保存了英国原味儿,而是有些不伦不类,如果是我翻译,我会想这对话更像是几个中国人之间的气氛,甚至北京人。。

下一本书准备是王小波的《红拂夜奔》……但是我实在怕中文读起来比英译中的还难懂。。


22  09 2008

关于越狱这个电视剧

越狱已经进入第四季,也越来越扯淡。

如果说第一季大热,可能要归功于michelle那有点神秘的纹身,上面不止是地图,还有每步计划的安排,我觉得卖点就在于这是一个缜密的计划,在他进监狱之前就已经把每个步骤都考虑透了,而情节我觉得倒没什么意思,政府阴谋论,狱中形形色色的人都被演绎烂了,更不用说越狱的方法简直就是copy肖申克的救赎,就连方式(挖洞)到主角的气质都是一样。可是第四季开始,michelle的那副纹身早已成了摆设,甚至为了怕暴露目标要把纹身刮掉。。第四季是个没有围栏的监狱,监狱是他们逃不掉的命运。

如果说后来还有看头,那么第二季里michelle的计划一次次被打乱,他已经不是那个运筹帷幄之中的神,也要时时随机应变,而比较出彩,也是后来被很多人喜欢的反而是那个恋童癖的tbag,那个男人太悍了,虽然断了一只手,但是遇神杀神遇佛杀佛,很搞不清楚他是怎么在少一只手而且那么瘦小的情况下干掉那个大个警卫的,总之第二季塑造了tbag,也是存留到第四季的重要角色。

第三季挺短,女总统已死但是死的不明不白,要再弄出个更大的阴谋,所以有了company这个代称,可笑的是他们那些蒙在鼓里的人叫它company,那些为这个集团做事的人也叫它company。。就好像天龙八部里人人说的大恶人。总之没人知道company是干嘛的,反正有这么个庞然大物似的潜伏的怪物。我觉得这时剧情已经僵化了。

第四季被割颅的女医生sara复活了,正像lincoln被michelle质问的时候说:当时在车库里打开那个箱子的时候的确很黑,但我确认看到的就是sara!这实在是狡辩,我不是说lincoln在为他的疏忽狡辩,而是编剧们无聊的辩解,好像就是说不管怎样她没死,事实就是这样。第四季的主题显然是从逃脱company的追杀,到反击company,但是情节还是俗套,sylar有六张卡的情节和那个能读20码范围内的电子数据的情节……我只能说太没有想象力了。不知道还有没有下一季,美剧是被商业价值操作的,只要还有油水可以榨就会一直拍下去,我想这也是美剧的悲哀,大部分都不会见好就收,善始善终的可能只有friends?

另外说一句,以前有个女孩跟我说她觉得越狱里L.J.的名字很特别,怎么会有人取名叫L.J.呢,都没有元音字母。。后来我知道L.J.=Lincoln Junior,林肯二世或小林肯吧,看其实老外和咱们的习惯差不多,我小时候跟我爸去单位的时候他的同事都管我叫小周坚,换英文就是Jian Junior,缩写JJ,呃显然这在中文里就没那么酷……


09 2008

感悟

佛教说人生有七苦,生、老、病、死、憎怨会、爱别离、求不得。

基督教说人生来就有罪,一生都要寻找救赎。

都很有哲理,但是我却无法相信那些信徒解决苦恼的办法,去信仰一个神?从小受到的教育就和这些背道而驰,很可惜我没有拥有信仰的潜质,活到这岁数虽然越来越对这些话有所感触,但是还是不能去信仰。

也许是秋天临近的缘故,最近的神色总是郁郁,感觉生活正离我越来越远。

以前每天下班回家打打游戏,或者辞职在家搞些不着调的“事业”也不觉得苦闷,自以为愈磨愈励的那段时光彷佛过去了,只是留下一堆臭毛病。

看《火影》(哦原谅我还在看动画片)中的佐井如此的不通世物,一些简单人际关系都要查书,起初觉得好笑太不真实,后来感觉那不就是我么。一句调笑的话,一个目光,一次皱眉,一段沉默,好像都会让人茫然失措,不知道如何应付,也许不至于那么糟糕,但觉得自高中毕业以来到现在竟没什么变化,只是性格上的那些缺陷随着周围人们的成熟却越来越明显了。

古人说:当一日三省吾身。我确实每天都在反省,告诫自己不要做一个自以为是的混蛋,但是效果却不好,还是没有下决心改变的缘故吧。

从来都不认为自己是这样悲观的,但是也该把盲目的乐观收收了,我还是相信无论从什么时候人生永远是可以改变和选择的,至少我可以让自己这么想,但是这一次,不想只有过程而没有结果。即使结果是失败。

找一些可以让自己热爱生活的理由吧,也许是个新的开始。


08 2008

flash/flex中中文字体的缺陷

首先,在flex中想使用设备字体不管用,但是发现在flash中画出一个textfield是可以使用如华文彩云这样的字体的,于是用flash做了一个导出类,放在flex中作为组件,但是发现,这个textfield如果在制作时把初始字体设置为宋体,则在运行中也可以使用中文设备字体,但是这时英文字体就失效,如果把初始字体设置为Arial等英文字体,则中文字体又不管用了。。所以目前想用设备字体达到效果可能还不太靠谱,还是老老实实用嵌入字体吧。。我现在的方法是,通过把样式表文件编译成swf,然后再通过StyleManager.loadStyleDeclarations方法动态加载外部样式。谁还有更好的解决办法么。


07 2008

GFW, 人的忍耐是有限度的

前几天发现sf.net不能访问了还没在意,因为以前访问也很慢,今天有人说起他也不能访问,于是搜索了一下,发现又被Great FireWall干掉了。要知道sourceforge是全球最大的open source软件基地,几乎所有的开源项目你都可以在上面找到,为什么要封掉一个技术网站?也没有谈论政治?据有人说是因为一个开源软件notepad的作者反对奥运,如果是这样我很无语,gfw到底给国内网民带来了什么?封掉多少糟粕,又真正给人们正常上网带来多少困难?不知道是哪个王八蛋想出gfw这种馊主意,就跟明朝时候有混蛋皇帝认为海边多倭寇侵扰就实施清壁坚野一样无知,gfw挡住的不只是关于中国的负面消息,更是阻塞民智,自己示弱的表现。为了一点小事封掉一个在计算机技术领域里如此重要的网站,真是莫名其妙。

不想再多说了。


06 2008

如何在flex builder中使用flash 9的组件

网上搜了一下,老外有篇blog是写这个的,试了一下可以用,原文地址

简单说一下怎么做:

首先,建一个fla,把需要导出的组件拽进舞台(库)中
然后选导出影片
导出对话框选生成swc

然后在在flex中的project 属性里把lib path加上这个swc就可以了

不知道为何直接用flash安装目录里components下的那些swc为什么不行,不过经过以上步骤就可以直接用flash中的组件了~~

其实flash中其他的mc/字体/图片等也可以在link了class后输出swc这么使用。


30  05 2008

写了一个Flash的Transition

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package 
{ 
import flash.display.*;
import flash.geom.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import fl.motion.BezierSegment;
 
 
public class MarsFly extends Transition 
{
	private var _origin_x:Number;
	private var _origin_y:Number;
	private var _origin_zoom:Number;
	private var _origin_alpha:Number;
	private var _start_x:Number = 0;
	private var _start_y:Number = 0;
	private var _control_x:Number = 0;
	private var _control_y:Number = 0;
	private var _start_zoom:Number = 2.5;
	private var _start_alpha:Number = 0;
	private var _bezier:BezierSegment;
 
    /**
     * @private
     */ 
	override public function get type():Class
	{
		return MarsFly;
	}
 
 
 
    /**
     * @private
	 * @param transParams - 参数zoom,alpha,x 起始点x,y 起始点y,cx 控制点x,cy 控制点y
     */ 
	function MarsFly (content:MovieClip, transParams:Object, manager:TransitionManager) 
	{
		super(content, transParams, manager);
		_origin_x = this.manager.contentAppearance.x;
		_origin_y = this.manager.contentAppearance.y;
		_origin_zoom = this.manager.contentAppearance.scaleX;
		_origin_alpha = this.manager.contentAppearance.alpha;
		_start_x = (transParams.x)?transParams.x:0;
		_start_y = (transParams.y)?transParams.y:0;
		_start_zoom = (transParams.zoom)?transParams.zoom:2.5;
		_start_alpha = (transParams.alpha)?transParams.alpha:0;
		_control_x = transParams.cx;
		_control_y = transParams.cy;
 
		_bezier = new BezierSegment(new Point(_start_x, _start_y),
									new Point(_start_x, _start_y),
									new Point(_control_x, _control_y),
									new Point(_origin_x, _origin_y)
									);
	}
 
    /**
     * @private
     */     
	override protected function _render(p:Number):void 
	{
		var point:Point = this._bezier.getValue(p);
		this._content.x = point.x;//this._start_x + (this._origin_x - this._start_x) * (Math.sin(p*Math.PI/2));
		this._content.y = point.y;//this._start_y + (this._origin_y - this._start_y) * (Math.cos((1-p)*Math.PI/2));
		this._content.alpha = this._start_alpha + (this._origin_alpha - this._start_alpha) *p;
		this._content.scaleX = this._content.scaleY = this._start_zoom + (this._origin_zoom - this._start_zoom) *p;
	}
 
}
 
 
 
}

调用时

1
2
3
4
5
6
7
8
9
import fl.transitions.*;
import fl.transitions.easing.*;
 
btn1.addEventListener(MouseEvent.CLICK, function (event){
TransitionManager.start(img1_mc, {type:MarsFly, direction:Transition.OUT, duration:2, easing:Strong.easeOut, x:300,y:300, cx:300, cy: 0,zoom:5,alpha:0.1}); 														
														});
 
btn2.addEventListener(MouseEvent.CLICK, function (event){
TransitionManager.start(img1_mc, {type:MarsFly, direction:Transition.IN, duration:2, easing:Strong.easeOut,x:300,y:300, cx:300, cy: 0,zoom:0.1,alpha:0}); 																										});

17  05 2008

内容迁移

以前的日志全都搬回来了。


16  05 2008

运行时共享库(runtime share lib)

运行时共享库的作用是在swf中动态加载外部库,使用库中的资源等等,以下是例子:

1. 新建一fla,命名为Lib.fla
2. 在fla中新建一个元件,库面板中右键选择“链接”,类名设置为MyCircle
3. 新建一as文件,命名为MyCircle.as(空类),代码如下

1
2
3
4
5
package{
	import flash.display.*;
	public class MyCircle extends Sprite{
	}
}

4. Lib.fla的文档类处写LibTest,然后新建一LibTest.as,代码如下

1
2
3
4
5
6
7
8
9
package{
	import flash.display.*;
	public class LibTest extends Sprite{
		public var CircleClass:Class = MyCircle;
		public function echo(string:String){
			trace("echo from lib:" + string);
		}
	}
}

5. shift + f12 导出Lib.swf
6. 新建一app.fla,文档类设置为AppTest
7. 新建AppTest.as,代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package{
	import flash.display.*;
	import flash.net.*;
	import flash.events.*;
 
	public class AppTest extends Sprite{
		public function AppTest (){
			init();
		}
 
		public function init():void{
			var loader:Loader = new Loader();
			var req:URLRequest = new URLRequest();
			req.url = "Lib.swf";
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
			loader.load(req);
		}
 
		public function completeHandler(event:Event):void{
			var loader:Loader = (event.target as LoaderInfo).loader;
			var lib:LibTest = LibTest(loader.content);
			trace(lib);
			lib.echo("xxx");
			addChild(new lib.CircleClass());
		}
	}
}

8. 导出运行一下,可以看到Lib.swf被加载以后,AppTest调用lib中的MyCircle类新建了一个圆形加载了舞台上。

这种方法可以用来动态加载字体,或其他比较大但不是必须的资源。
注意这种方法和flash 本身所的runtime sharelib应该是不一样的,flash的这个概念是可以将原件按share lib导出,然后再fla中可以导入swf得到swf中的库元件,这个运行时是指flash开发工具的运行时而不是swf的运行时。

下载本文源代码:sharelib


« Previous PageNext Page »