Java 中的匿名类用起来十分灵活,它可以有效地减少类的个数,AS3尚未直接支持匿名类实现,不过它支持闭包,可以借助闭包来模拟Java中的匿名类实现:
要实现匿名类的接口
package zzx.test.flex
{
public interface Interface
{
function i1():void;
function i2(name:String):void;
function i3(value:int):int;
function i4():void;
}
}
写一个实现这个接口的辅助类
package zzx.test.flex {
public class InterfaceAnonymouse implements Interface {
private var _i1:Function;
private var _i2:Function;
private var _i3:Function;
private var _i4:Function;
private function anyCall(func:Function, ...params):*{
if(func == null) return null;
return func.call(this, params);
}
public function i1():void {
anyCall(_i1, arguments);
}
public function i2(name:String):void {
anyCall(_i2, arguments);
}
public function i3(value:int):int {
return anyCall(_i3, arguments);
}
public function i4():void {
anyCall(_i4, arguments);
}
public function InterfaceAnonymouse(i1:Function, i2:Function, i3:Function, i4:Function) {
this._i1=i1;
this._i2=i2;
this._i3=i3;
this._i4=i4;
}
}
}
匿名类实现模拟
public function testInterface():void {
var obj:Object = new Object();
obj.name = "mysh";
var inter:Interface=new InterfaceAnonymouse(function():void {
Alert.show("i1");
}, function(name:String):void {
Alert.show("hello, "+name);
}, function(value:int):int{
return (value+100);
}, null);
inter.i1();
inter.i2(obj.name);
Alert.show(inter.i3(200).toString());
inter.i4();
}
总结
优点
缺点
- 接口需要对应写一个辅助类
- 闭包方法没有名字
- 方法闭包缺少完整性约束,如闭包方法参数声明错误需要在运行时才能发现
要使用更灵活的方式,可以看看
AS3 匿名类实现模拟(无类型)
如果哪位仁兄有更好的方法,欢迎拍砖
分享到:
相关推荐
一个用AS3实现的关于苹果菜单的模拟,效果不错(带简单实现原理图)
AS3 模拟时钟 AS3 模拟时钟 AS3 模拟时钟 AS3 模拟时钟
用AS3实现调用GPS功能,同时也可以调用经纬度。
as3读取excel的类包,用flex读取excel文件
AS3 接口实现 刷分用。。不懂的可以下载瞧瞧!!
RT,用flash(as3)做的钢琴模拟游戏,用flash player(或其他播放器)打开src文件下的.swf文件即可运行。按键盘可弹奏。
关于AS3.0的类的详细解释,有关于“继承”、“覆盖”等多种介绍
AS3类继承树+AS3中文API.整个ActionScript3的类关系图以及ActionScript中文API。是很值得参考的资料。
AS3 实现发邮件
as3实现播放.wav扩展名的声音文件 as3实现flash与javascript(js)的通讯 要引用: import de.popforge.audio.output.SoundFactory; import de.popforge.audio.output.Audio;
FLEX 3 常用的AS类包
实现MP3的播放用as3代码实现的其中遇到问题最多的是在将播放器部署到服务器上会出现安全策略的问题
AS3中Matrix类详解AS3中Matrix类详解
AS3类图表.rar pdf格式AS3类图表.rarAS3类图表.rar
as3实现经典寻路
flash实现在线录音的as3类,MicRecorder 制作在线音乐播放器很有用处
在AS3上面模拟万花尺的FLASH文档,做法很简单,加旋转属性就好。详见文档内部!
调用简单,纯代码实现按钮 var button01: SimpleButton = org.button.button.newButton({title: "按钮"});
java中阶乘计算常见,在flash中其实差不多,AS3实现5!等阶乘结果~~
AS3的TweenLite类,一个很好用的缓动类,直接把gs文件夹导入即可以使用。