ais 适用于所有语言的开源项目

 ais 开源地址:http://code.google.com/p/ais-alis-allis
 ais 的名字由来是 all is 即适用于所有的语言
 ais 的目的是打造一个核心代码,能为以后的框架开发带来便利。
基于 ais 可以很快的开发各种各样的框架,应用于任何结构,而不是中能开发一个框架,形形色色的框架都可以运用它,甚至任何语言都可以运用它(当然是运用它的理念)。
 ais 具有相当强的灵活性,并且是轻型的。它重写了事件机制,可以用一个简单的字符串调用其他不相关类里的方法。
这绝对能优化代码结构,提高开发效率。
 同时,它又不矢为一个工具包,可以简单的用于各种应用程序。

ais 的目录结构很简单,主要是 3 个类:IEvent,DEvent,TEvent。
这 3 个类是都不需要外部实例化的,可以直接使用,运用起来非常灵活,简便。
1. IEvent
IEvent 只有两个静态方法:addEvent,removeEvent
对了,顾名思义,就是 addEventListener 和 removeEventListener
IEvent 是统一管理所有对象的侦听事件,只不过参数上有写变化。

addEvent(obj:*, type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = true, ...parameters):void
obj :要添加侦听事件的对象
useWeakReference:确定对侦听器的引用是强引用,还是弱引用。这里有变化,默认采用的是弱引用,而不是 as3 默认的强引用,因为我们希望能够移除无效的事件侦听。
parameters:这里是自定义参数,可是这里只能按值传递,不能传引用。(有一个解决办法是传对象)

removeEvent(obj:*, type:String, useCapture:Boolean = false):void
这里只多了一个 obj::要移除事件的对象,其他的没有变化

2. DEvent
DEvent 包含 5 个静态方法:addEvent,removeEvent,doEvent,hasEvent,hasEvent
DEvent 是控制一个 EventDispatcher 对象,即每个应用程序只有一个 DEvent,这样就实现了统一管理,优化代码结构。
像使用 EventDispatcher 一样使用 DEvent。
除了 addEvent 特别,其他的方法都同 EventDispatcher。
DEvent 中运用了 IEvent,能实现传递参数,这更优于 EventDispatcher。

3. TEvent
TEvent 类似 DEvent,但仅仅是类似,它有自己的结构,是独立的。
在这里,我们运用了触发器的概念。
TEvent 包含 5 个静态方法:newTrigger,trigger,removeTrigger,clearTrigger,hasTrigger。
newTrigger:注册触发器
newTrigger(type:String, listener:Function, priority:int = 0, thisObject:* = null, ...parameters):void
type:触发类型
listener:触发事件
priority:触发优先级
thisObject:要应用该函数的对象
parameters:自定义参数

removeTrigger:移除触发器
removeTrigger(type:String, listener:Function):void
type:触发类型
listener:触发事件

clearTrigger:清空 type 类型的触发器
clearTrigger(type:String):void

hasTrigger:检查是否为 type 类型注册了触发器
hasTrigger(type:String):Boolean

trigger:触发事件
trigger(e:*, ...parameters):Boolean
e:e 可以为 Event,也可以为字符串
parameters:自定义参数

trigger 在触发事件时能够传递参数,同时 e 可以为 Event,也可以为字符串,所以强烈建议注册触发事件时选择 TEvent,而不是 DEvent。(虽然 DEvent 依然有用)

对于 ais 核心代码,我们已经充分考虑到垃圾回收问题。开销大的情况下进行智能回收,这是很棒的。

通过 Memory 的静态方法 clear 可以实现内存的智能垃圾回收,不过第一次使用是必然进行垃圾回收的。
clear(type:int = 0):void
type:当 type = 0 时,智能清空内存
  当 type = 1 时,立即清空内存,但不更新清空条件
  当 type = 2 时,立即清空内存,同时更新清空条件

所以可以在任何地方直接调用 Memory.clear() 来进行垃圾回收,同时不必担心降低效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值