标签包含 ‘AS3’ 的文章

【从Actionscript3到Objective-C 2.0】1-3:方法(修正版,感谢Shane的指正)

Objective-C | 星期六, 十月 9th, 2010

声明:【从Actionscript3到Objective-C 2.0】系列连载,为本人(Swfdong/Sheldon.Zhang)原创,仅”9ria天地会”一家网站可以在未经本人许可的情况下进行转载,其他网站需转载请与我取得联系。

在度过了一个格外忙碌的长假之后,终于有时间更新从AS3到Obj-C的连载了,今天要讲的是重头戏,可以说是尤为关键的一部分。
有的朋友或许已经发现了,之前我们所讲的“类和接口”章节只讲了如何编写一个类,而没有将如何使用一个类,这是因为我们还不了解Obj-C中方法的用法,在本节中,我们就会提到类的用法。好了,话不多说,开始正文。

1-3:方法

一个离开了方法的面向对象程序,是不可能运行的。我们使用Obj-C进行iOS应用开发的大多数时候,都是在与方法(和属性)打交道。

有别与AS3的点语法,Obj-C中对方法的调用是使用名为“消息”的机制实现的。消息机制是Obj-C对C语言最重要的扩充,也是大多数开发者学习Obj-C时觉得最困难的部分。

消息是什么呢?大家都知道,程序代码之间是不存在“默契”一说的,一个对象需要目标对象做特定事情时,就一定要通知到这个对象,这个通知就是一条消息。

(更多…)

【从Actionscript3到Objective-C 2.0】1-2:类和接口

Objective-C | 星期六, 九月 25th, 2010

声明:【从Actionscript3到Objective-C 2.0】系列连载,为本人(Swfdong/Sheldon.Zhang)原创,仅”9ria天地会”一家网站可以在未经本人许可的情况下进行转载,其他网站需转载请与我取得联系。

1-2:类和接口

类是面向对象编程中非常重要的一个概念,之所以将类和接口放在一起,是因为在Obj-C中,类和接口是密不可分的。

大家都知道,在AS3中,使用以下格式进行类的定义:

public class 类名 extends 父类名{
//构造函数
public function 类名(参数:参数类型):void{
}
//实例方法
public function 方法名(参数:参数类型,参数名:参数类型):返回类型{
}
//类方法(静态方法)
public static function 方法名(参数名:参数类型,参数名:参数类型):返回类型{
}

}

而在Obj-C中,则将类的定义部分抽离到“接口”之中,这就意味着Obj-C与AS3中关于“接口”的定义是不同的,至于AS3中“接口”于Obj-C的实现方式,我们后文会讲到。

(更多…)

【从Actionscript3到Objective-C 2.0】1-1:语法共性与差异

Objective-C | 星期六, 九月 25th, 2010

声明:【从Actionscript3到Objective-C 2.0】系列连载,为本人(Swfdong/Sheldon.Zhang)原创,仅”9ria天地会”一家网站可以在未经本人许可的情况下进行转载,其他网站需转载请与我取得联系。

1-1:语法共性与差异

Actionscript3(以下简称AS3)是Flash技术目前使用的一种完全面向对象的脚本语言,而Obj-C是Mac OS X/iOS目前使用一种在C基础上添加面向对象特性的编程语言。既然都具有面向对象的特性,我们就不难从中找出一些共同点。

(更多…)

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

AS3, 算法相关 | 星期四, 九月 2nd, 2010

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

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

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

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

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

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

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

(更多…)

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

Flash Platform | 星期六, 八月 21st, 2010

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

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

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

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

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

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

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

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

(更多…)

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

AS3, 算法相关 | 星期四, 八月 5th, 2010

上面的这个演示用的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数据类型

AS3, 效率优化 | 星期三, 八月 4th, 2010

自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的最佳使用方法。

(更多…)

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

AS3, 算法相关 | 星期日, 七月 11th, 2010

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

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

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

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

输出的排序有明显问题。

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

(更多…)

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

AS3, 网络连接 | 星期日, 七月 4th, 2010

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

下面是正文。

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

(更多…)