天地会的算法PK:小天的约会

算法相关 | 2010年09月2日

什么,有好玩的编程问题?咱可就指着这个活呐。

这次纳兰出的是一个很美好的、帮助小天约会的题目。

原帖地址:http://bbs.9ria.com/thread-62598-1-1.html

简单说来,就是有n*n的一块地图,从其中一点出发,走遍地图上所有格子,求走法,再求共有多少种走法。

当然,算法是咱弱项,不可能像flashyiyi那样不到半小时就做出来。

不过既然要做,还是带个图比较好玩一些,取长补短吧:-)

经过了n久的努力……有了下面的小程序:

您的浏览器没有安装或启用FlashPlayer,莫非是iPad?

感觉不错,看看全文 »

关于Flex:毁了Flash的,或许就是Flex。

Adobe, Flash Platform | 2010年08月21日

以下内容仅为个人观点,欢迎讨论,谢绝谩骂。

说起来,小东应当算是比较特别的一个Flash开发者,至少目前还是。

第一,我不用靠Flash开发吃饭,但又足够热爱Flash,这使我可以跳出“生活所迫”的无奈境地来看整件事情;

第二,我从不靠Flex开发,因为我不大喜欢这项技术。

今天想说的是Flex,也可能用“骂”更恰当,因为我认为这项技术阻碍了Flash未来的发展,而我本身是十分热爱Flash技术的。

事情的一开始,无论是Macromedia还是Adobe,都对ActionScript、对FlashPlayer的效率过于自信了。

就在这样的盲目自信下,Flex勉为其难的诞生了,目的在于拉近Flash与传统程序员的距离,却逐渐让Flash技术偏离了其原本的轨道。

最开始的Flash,是设计师的工具,用来实现更独特、更新颖的互联网交互体验。而我认为,RIA一词,也正是为向着这个目标更进一步而提出的。可悲的是,现在很多人一提到RIA开发,就将其与Flex联系起来,事实上,Flex技术与RIA的精髓是背道而驰的。

感觉不错,看看全文 »

2KB能做什么:AS3摄像头自动调整

AS3 | 2010年08月5日

您的浏览器没有安装或启用FlashPlayer,莫非是iPad?

上面的这个演示用的swf只有2kb,实现了以下两个功能:

1.对摄像头采集的图像进行直方图均衡。

2.对摄像头采集的图像进行自动色阶调整。

本来还做了自动白平衡,不过发现网上流传的算法并不好用,故没有加进来。

效率还是不错的,即使是对320*240的视频流进行持续自动调整也能保证24-25的帧频。

属于aii.bitmap.effects包下,会随着aii.ui包的开源一块开源的。

(aii项目中目前计划开源的只有aii.bitmap和aii.ui两个包)

目前实现了Sobel/Hough边缘检测,直方图均衡(RGB通道),色阶调整(自动/手动,RGB通道)基于直方图选择阈值并二值化等功能。

另外还有使用PixelBender实现的肤色过滤器(基于Soriano提出的RGB肤色模型)、中值滤波器、最大值/最小值滤波器(滤波器是借鉴了国外牛人的pbk代码)等。(这里赞扬一下,PixelBender生成的pbj文件嵌入swf以后只占用不到1kb,相当轻量)

AS3效率优化:使用Vector数据类型

效率优化 | 2010年08月4日

自FlashPlayer10伴随着FlashCS4发布时,AS3中就多了一种新的数据类型:Vector

这里先给不大熟悉Vector的同学们做一下简介(节选并改编自官方文档):

Vector是一种特殊的数组

  • 首先,Vector的定义和C语言中“数组”更为接近,即数组的每一个元素都有相同的数据类型。(这就意味着对Vector中元素的访问要经过类型检查)
  • 其次,Vector是一种密集数组,即每一个索引中必须包含一个值。(可以是null)
  • 最后,Vector可以随时指定为固定长度的数组。

由于这些特殊性,Vector便拥有以下几点优势:

  • 性能:使用 Vector 实例时的组元素的访问和迭代速度比使用 Array 时的要快很多。
  • 类型安全性:在严格模式下,编译器可以识别数据类型错误。(但当使用 push() 方法或 unshift() 方法向 Vector 添加值时,编译器不会检查参数的数据类型,而是在运行时检查)
  • 可靠性:相对于 Array,运行时范围检查(或定长检查)极大地提高了可靠性。

今天我们主要关注的是使用Vector数据类型来优化程序效率。

对于追求效率的RIA应用,使用Vector来提升效率是一种简单却行之有效的办法,

然而很多开发者对Vector的了解不够深入,以致未能充分发挥Vector在速度的优势。

接下来我们便来剖析一下Vector的最佳使用方法。

感觉不错,看看全文 »

“卖萌什么的最讨厌了~”——Miharu卖萌记

影像 | 2010年07月23日

前几天拍摄的一段短片:-P
大家自己看吧~

您的浏览器没有安装或启用FlashPlayer,莫非是iPad?

使用FP10.1新特性进行全面高效的中文排序

AS3, 数据处理 | 2010年07月11日

在FlashPlayer10.1出现之前,AS3的中文排序只能靠很死板,很不完善的方式实现。
现在问题终于得到了改善,我们可以很方便的对中文进行排序了:-)
首先来看看要测试的代码:

var words:Array=["囧","杜","寤","頔","腭"];//jiong,du,wu,di,e

我们使用传统排序方式对其进行排序:

words.sort();
trace(words);//囧,寤,杜,腭,頔 = jiong,wu,du,e,di

输出的排序有明显问题。

现在让FlashPlayer10.1新增的flash.globalization 包来帮我们解决问题吧。

感觉不错,看看全文 »

为Flash正名,为Flasher正名:我们不止是做动画的。

心情感悟 | 2010年07月10日

总是有人问我:你从哪门语言开始学的编程?

我都会回答:Actionscript。

对方往往是一愣,然后不解的问:什么?

我只得再说:Flash中的动作脚本。

对方大多以这样的问句收场:“Flash不是做动画的么?”

说到Flash,大家就想起动画,说到做Flash的人(闪客),大家就理所应当的与做动画的人划等号。

没错,早期的Flash(MX以 前),主要任务确实是做动画,但从Flash5开始,Flash的主要任务就逐渐向开发“网络应用”的方向靠拢,在Flash MX时代,Macromedia推出了“RIA”(Rich Internet Application,富网络应用)的概念,这个概念使得我们的网络世界得以大幅进化。

一开始,大家体会最深的,可能就 是网站的广告形式变得更加多样化,互动型广告逐渐兴起。

慢慢我们开始看到,网上出现了越来越多的Flash单机小游戏,不需下载,在线即 玩。

紧接着,Flash个人站点开始大量兴起,众多知名设计师/设计工作室的站点都使用了Flash技术。

同时发生的大事件 就是Flex的诞生,Flash技术对传统开发人员更加友好,一些企业级应用开始使用Flex技术。当然,2005年左右AJAX技术的兴起,对 Flash技术的应用有所压制。

接下来一些与网络结合更加紧密的Flash应用开始出现,在线涂鸦板/在线大头贴/QQ秀(是的,QQ秀) /在线Photoshop/简单的网络对战游戏(如五子棋等)/纯Flash社交社区 就是其中的典型。

随着Facebook类社交网站 (国内是kaixin001/renren)的兴起,以及功能更强大、语法更规范、效率更高的ActionScript3的发布,大量社交应用都使用了 Flash技术,为国人所熟知诸如开心农场、人人餐厅、宠物派、开心宝贝、荣光医院等网页游戏,无一例外地使用Flash技术来作为前端呈现。

近 几年,Adobe AIR的推出,使得开发人员可以使用Flash技术开发跨设备、跨平台(cross-device&cross-platform)的桌面应用, 无论是Windows,Mac,Linux,甚至是Android手机,一个安装包即可通用。

说到这里,你还认为 Flash只是用来做动画的么?

iPad,iPhone等iOS设备的FlashPlayer-“Frash”

Apple, Flash Platform | 2010年07月5日

此前有报道称,iOS越狱软件的Spirit的作者Comex准备破解,并将Flash带到苹果的i系设备中来。
现在,Comex宣布,他已经成功将Android Adobe Flash移植到iPad中来,称作Frash。Frash可在iPad的MobileSafari上本地播放flash。Comex表示需等Frash 一切稳定的时候才会发布该程序。
Frash目前只支持iPad,但很快也能支持iPhone 3GS和iPhone 4。
欣赏以下视频看看Frash在iPad上的效果如何。
感觉不错,看看全文 »

AS3实现通过HTTP代理进行Socket连接

AS3, 网络连接 | 2010年07月4日

最近在做的应用需要考虑到各种网络环境,于是在面对教育网等环境时就需要连接代理。
AS3目前还没有内置网络代理API,于是自己顺手写了一套。
目前只有HTTP代理+Socket连接,不久后会放出HTTP代理+HTTP连接的部分(其实是还没写:-P)
如果更有空一些,会写Sock5代理+Socket连接/HTTP连接的部分,不过不要期望太高就是了。

下面是正文。

总体来说,实现的很简单,使用起来也很简单,在创建实例的时候传递代理服务器地址、端口,然后当普通Socket类用就可以了。
(当然,建议在侦听事件时用ProxyEvent.CONNECT替代Event.CONNECT,因为对于HTTPProxySocket类来说,前者才真正表示已连接到目标服务器)

感觉不错,看看全文 »

I’m back

心情感悟 | 2010年07月2日

从swfdong.com告停,到swfdong.org启用,时隔数百天。

这期间经历的太多,难以言表。

千言万语,只留一句:

今天,不是心血来潮,小东回来了。