佳能影像公益—绿援使者(2011)活动投票统计工具
Adobe, AIR | 星期四, 五月 26th, 20112011年“佳能影像公益—绿援使者”活动的网络投票环节已经进入了尾声,
作为活动参与者之一,为了方便查看票数,制作了一个统计工具,顺便每天在微博公布排名。
现在到了投票的最后几天,为了方便所有参与评选的队伍,放出改进版的统计工具。
(更多…)
2011年“佳能影像公益—绿援使者”活动的网络投票环节已经进入了尾声,
作为活动参与者之一,为了方便查看票数,制作了一个统计工具,顺便每天在微博公布排名。
现在到了投票的最后几天,为了方便所有参与评选的队伍,放出改进版的统计工具。
(更多…)
什么,有好玩的编程问题?咱可就指着这个活呐。
这次纳兰出的是一个很美好的、帮助小天约会的题目。
原帖地址:http://bbs.9ria.com/thread-62598-1-1.html
简单说来,就是有n*n的一块地图,从其中一点出发,走遍地图上所有格子,求走法,再求共有多少种走法。
当然,算法是咱弱项,不可能像flashyiyi那样不到半小时就做出来。
不过既然要做,还是带个图比较好玩一些,取长补短吧:-)
经过了n久的努力……有了下面的小程序:
以下内容仅为个人观点,欢迎讨论,谢绝谩骂。
说起来,小东应当算是比较特别的一个Flash开发者,至少目前还是。
第一,我不用靠Flash开发吃饭,但又足够热爱Flash,这使我可以跳出“生活所迫”的无奈境地来看整件事情;
第二,我从不靠Flex开发,因为我不大喜欢这项技术。
今天想说的是Flex,也可能用“骂”更恰当,因为我认为这项技术阻碍了Flash未来的发展,而我本身是十分热爱Flash技术的。
事情的一开始,无论是Macromedia还是Adobe,都对ActionScript、对FlashPlayer的效率过于自信了。
就在这样的盲目自信下,Flex勉为其难的诞生了,目的在于拉近Flash与传统程序员的距离,却逐渐让Flash技术偏离了其原本的轨道。
最开始的Flash,是设计师的工具,用来实现更独特、更新颖的互联网交互体验。而我认为,RIA一词,也正是为向着这个目标更进一步而提出的。可悲的是,现在很多人一提到RIA开发,就将其与Flex联系起来,事实上,Flex技术与RIA的精髓是背道而驰的。
上面的这个演示用的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,相当轻量)
自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的最佳使用方法。
在FlashPlayer10.1出现之前,AS3的中文排序只能靠很死板,很不完善的方式实现。
现在问题终于得到了改善,我们可以很方便的对中文进行排序了:-)
首先来看看要测试的代码:
var words:Array=["囧","杜","寤","頔","腭"];//jiong,du,wu,di,e
我们使用传统排序方式对其进行排序:
words.sort(); trace(words);//囧,寤,杜,腭,頔 = jiong,wu,du,e,di
输出的排序有明显问题。
现在让FlashPlayer10.1新增的flash.globalization 包来帮我们解决问题吧。
此前有报道称,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目前还没有内置网络代理API,于是自己顺手写了一套。
目前只有HTTP代理+Socket连接,不久后会放出HTTP代理+HTTP连接的部分(其实是还没写:-P)
如果更有空一些,会写Sock5代理+Socket连接/HTTP连接的部分,不过不要期望太高就是了。
下面是正文。
总体来说,实现的很简单,使用起来也很简单,在创建实例的时候传递代理服务器地址、端口,然后当普通Socket类用就可以了。
(当然,建议在侦听事件时用ProxyEvent.CONNECT替代Event.CONNECT,因为对于HTTPProxySocket类来说,前者才真正表示已连接到目标服务器)