Fluid idea for Life

随笔,杂记

as3火焰效果

terafire是用as3写的一个火焰效果,代码很简洁,收在这里了。

效果看这里

Flex32Flex4

前几天Adobe放出了Flex 4的beta版本,不对,应该说是Flash Builder4的beta版本。这下好了,再也不用纠缠于Flash与Flex到底有什么区别这种问题了,也别去争论Flex与Flash是不是对头了,其实,它们就是一伙的。Flex现在就专门指其中的framework,不会有误解了。

从Flex2到Flex3,总体说来没什么大的变化,程序迁移问题不大,但这次的升级估计又会带来一些麻烦。我订阅了aralbalkan的拨棵,他在http://aralbalkan.com/2209中提到了这个问题。顺手找了一个Flex3版本的程序,直接放在 FB4中编译,还可以跑起来,但抛出了一堆警告。

Flex sdk4中,最让人疑惑的估计就是命名空间了,mx,s,fx,这都是些什么东西?以前的xmlns:mx="http://www.adobe.com/2006/mxml"也可以跑。

在Flex2和3中,MXML 2006 命名空间定义并包含了所有组件的映射,而在4中, MXML 命名空间升级到 2009,且只包括一些特定的语言标签,组件则有自己的命名空间, Flex 3 、'Halo'组件在halo库命名空间,对应为:xmlns:mx="library://ns.adobe.com/flex/halo",而新的 Gumbo Spark 组件则在 spark库命名空间:xmlns:s="library://ns.adobe.com/flex/spark。

另外,Gumbo新增了FXG文件格式,类似于MXML组件,如果要在mxml文件中使用FXG,则要将FXG标签导入到MXML 2009命名空间中:xmlns:fx="http://ns.adobe.com/mxml/2009"

Tags: flex4

我也开始drupal了

最近在作一个类似sns的站点,考虑到效率问题,决定选择一个开源平台,选择标准很简单,希望能够比较方便的二次开发,且效率和性能都不错,选来看去,最后选择了drupal。drupal和wordpress在某些方面有些相似,它们并没有走纯正的MVC线路,而使用的是动态型脚本语言特有的Hook(钩子)方式。

我之前使用过一段时间的codeigniter框架,觉得很不错,效率和性能很好,但如果用来开发较大的应用,感觉有点别扭,反倒是用简单实用的Hook,写起来反倒觉得很自然。

在数据库设计上,drupal似乎还有提高的地方,仅仅是安装必须的核心模块,加上blog和forum,数据库中的表就有近50个,而安装完一些所谓的常用模块,表的数量刷的就增到近70个,有点吓人,最好的方法还是自己写模块。

让你轻松使用pv3d

今天看到了一个另人想象不到的东西:vizualpv3d,看上去像一个复杂无比的软件,让我们可以轻松创建3d对象,所有的操作都是可视化的,像操作组件那样,添加光照,调节Camera...我想只有老外才有这样的精力和魄力做出这样的东西来。

试用了下,感觉不错,参数太多,还还玩透。目前可以将场景导出为xml,但没看到对应的解析播放器,期待下一个版本。

Tags: pv3d

播放mp3的另一种方法

as3中,ByteArray的出现使得很多应用成为了可能,URLLoader支持以二进制流加载数据,Loader的loadBytes方法可以让我们实现数据和可视对象的转换,到现在为止,已经有牛人写出了一堆的文件分析库,包括swf、png、jpg、gif、zip、ico、psd、bmp、wav...,相信还会越来越多。

不过,as3至今不支持动态载入声音数据,比如mp3数据,但牛人总有牛方法,这不:http://www.flexiblefactory.co.uk/flexible/?p=46,这位实现了以二进制方式播放mp3文件。

分析了一下原理,大概是:首先利用Flash Player 10的新功能,FileReference新增的load方法,获取mp3文件的数据,(这里可以改写为URLLoader加载),然后动态构造一个SWF文件,向其中写入mp3文件数据,从而得到一个包含该声音的swf文件,最后用Loader对象loadBytes,获取其中的SoundClass对象(SoundClass类在popforge中也有出现,有关这个类我还会作深入研究),然后播放。

这个过程不可谓不曲折,经测试,对采样率不是44khz的mp3好象不奏效,原因可能就是上一帖中说的那个啥。

ps,as pdfbox项目已经搁置有段时间了,最近准备再拾起来

Tags: loadBytes

难道一个完美的SOUND真的很难?

很久就听说AS3的Sound有些诡异,一直没有亲见,这次终于碰上了。 下面是段简单的代码:

var sound:Sound = new Sound();
sound.addEventListener(Event.COMPLETE,onLoaded);
var soundChannel:SoundChannel;
sound.load( new URLRequest("test.mp3") );
function onLoaded(e:Event):void
{	
	soundChannel = sound.play();
	soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundOver);
}</p>
<p>function onSoundOver(e:Event):void
{	
	trace("over:"+sound.length+":"+soundChannel.position);
}

播放完毕,会发现SOUND_COMPLETE事件触发时,position总会小于length,实际测试时,mp3文件不同的采样率导致不同的误差,大的有好几秒,小的有几百毫秒。在一般情况下,这个误差可以忽略,但如果需要对声音时间进行精确控制,问题就大了。最近做的项目中恰好需要对声音进行精确控制,精确到200毫秒左右,在经过反复检测后发现了这个问题。 Google下,发现很多人都遇到了同类问题,比较权威的解释是:Flash Player可以处理比特率在16-320kbps范围内的mp3,且总以44.1khz的采样率来进行播放,这意味着如果原采样率是22khz,则以两倍速度进行播放,于是产生了误差。 有个老外写了一个精确获取position的方法,通过采样率来校正误差,地址一时找不到了,但还是没能彻底解决这个问题,只有等Adobe来做了。

Tags: SOUND_COMPLETE

看过团长,写点什么

经过一段时间的努力,终于看完了《我的团长我的团》,回味了两天,感触很多。 总的说来,太大气,太震撼,太真实,太伤感,太残酷,太感动,太喜欢!但又不忍心看第二遍,因为已经知道结局。 和《士兵突击》相比,我觉得《团长》上升了好几个层次。和其它的军事题材的电视剧相比(其实我没怎么看其它的),我想团长无疑是最特殊的一部,以前没有,我很奇怪这样一部满是象征意味有点先锋的电视剧居然通过了审查,肯定是某个一肚肥肠的家伙实在熬不下去,中途睡着了。 剧中的每个人,都跳出了传统的“好”和“坏”,“正角”和“反角”,开篇正气领然的虞啸卿,在关键时刻却失去了那股血性,变成了一个有些世故的“上峰”,炮灰团的人渣们,打了一场最荡气回肠的硬仗,这不由得让人抓狂,但却异常真实。这样类似的情节,我想在生活中时刻在上演,你可以说成是领导的艺术,或者生存的技巧。 习惯了港台制造的肥皂剧,〈团长〉的台词着实让人要用力地想才能明白。“小太爷”孟烦了的口舌实在厉害,讽刺挖苦尖酸刻薄,偶尔吐一两句警世名言,总是一付得过且过的随心模样,对着心爱的姑娘却说不出来半句想说的话,他最后还是成全了别人,让自己去面对做逃兵留下的自责;死啦死啦是一个复合体,他身上的缺点和优点一样多,但却可爱的紧。不管怎样,他在关键时刻总是坚持自己的原则,不抛弃,不放弃;迷龙,让人又爱又恨,豆饼跳进雷区的那一刻,我真是希望他马上死去,但这又不能怪他;“不辣”,王八盖子的,这样类似的人在生活中好象总是有,很亲切,就像在身边;还有老头,一个好心的帮不上什么忙的医生,也许他更多的是一种精神上的象征,让这些年轻人有个依靠。 这些主角每个都个性十足,但都不算高大全的正面相形,却格外真实,这才是生活。 〈团长〉表达的内涵太多,很容易引发思考,唯一遗憾的是出于商业考虑,节奏过于拖沓,影响了整体的连续性。

Tags: 团长

很强大的AS3库

libspark是一群日本开发者维护的ActionScript开源站点,其中包括了数量繁多的库,其中的很大一部分都很实用,比如swfassist,一个解析SWF文件的库,支持Flash player 9,可以用as动态生成swf文件,还有FLARToolKit,一个as版的虚拟实现库;解析psd文件、ico文件、bmp文件..... 地址:http://www.libspark.org/wiki/WikiStart/en

Tags: libspark

用python写手机小程序

目前在手机上Flash lite的扩展比较火,有KuneriLiteJanusFlyer,刚看到的Flash lite server,还有S60平台的sis打包工具,将swf转为sis可安装文件。 这些扩展软件的原理都相同,其中,KuneriLite和Janus的功能应该算相当强劲的,前者支持s60第三版系统,后者侧重wm系统,Flyer相对简单些,不过Flyer是用python写的,而且开源,扩展性很强。 python出来有很多年了,听闻很强大,但没有亲见。听说在手机上也能跑,很激动。试了下,我的7610居然也能装,s60第二版的系统。写代码确实很简单,功能也很多,发短信、打电话、调用摄像头,几行代码就够了,这是个截屏的代码: import graphics img = graphics.screenshot() img.save(u"e:\\Images\\screenshot.png") 在手机上跑,图片效果: screenshot python也能在wm系统上跑,听说在iphone、google android也都可以,在图形化界面上,效果也都很不错,不过用户需要安装解释器,而且目前的手机一般都没有预装,如果推广了,相信比flash lite更具前景。

Tags: python

Flash lite - ActionScript Stuck排错记

随着3G的到来,手机应用好象又开始升温了,不过总体上看,flash在手机应用上还处于起步阶段,把技术转换为简单实用的产品和服务,这中间还有很多路要走。 最近做的东西很杂,包括一个在手机上跑的Demo。环境是flash lite 2.0,在模拟器上跑Demo,一起正常,结果搬到真机上跑,出现了 Problem with content 4运行时错误,程序挂了。翻阅手册,发现是颇经典的“ActionScript Stuck”错误,肯定是哪块代码写的有问题,于是开始优化程序,所有不用的变量全部delete掉,仔细检查所有的循环,把for循环全部改为while循环,数组定长等等,不过错误依旧。

» 阅读全文

Tags: flash lite