2008年12月1日星期一

as3 eval

as3去掉了eval函数,使得无法动态执行一段代码,网上有老外牛人写了一个类似的eval的函数,叫D.eval,

华丽啊...
示例如下:
import r1.deval.D;
var six:int;
six = D.eval("4 + 2") as int;
six = D.evalToInt("var x=0; for(i=1;i<=3;++i)x+=i;return x");
six = D.evalToInt("a * b", {a:2, b:3});
six = D.evalToInt("f(5)", {f:function(x:int):int{return x+1}});
six = D.evalToInt("xml.@size*2", {xml:});
six = D.evalToInt('xml=; return xml.@size*2');

官网下载包中有个小问题,当你放在flex中时候会遇到Util命名冲突
原因是Util类有两个,一个是在src下--针对输入的待解析的脚本代码,还有一个是AS3 Eval Library中的com.hurlant.eval.Util是包中使用的

as3天地会中有兄弟修改过ok的,可以去as3天地会寻找,D.eval可以去Google搜索找到

没有评论: