[英]Actionscript-3 namespaces and dynamic types?
好吧,这是一个奇怪的...
是否可以将命名空间成员添加到匿名或动态类型? 举例来说,如果您想将内置类型“标记”为“ touched”?
早些时候,我曾考虑过将隐藏成员添加到StyleSheets及其内部样式中,并想知道如何防止覆盖或序列化它们。 我放弃了,因为还有很多其他方法可以完成我想做的事情,最后期限迫在眉睫-但我仍然想知道它是否完全可行?
我一直在尝试,但是没有运气...
namespace mynamespace = "http://foo.bar/";
Object.prototype.test = "default";
Object.prototype.mynamespace::test = "mynamespace";
var o:Object = new Object();
trace(o.test);
trace(o.mynamespace::test);
在最新的Flex 4 SDK上,对我没有任何帮助...
我建议你这样做:
package {
import flash.utils.Dictionary;
public class Annotations {
private static var annotations:Dictionary = new Dictionary(true);
public static function of(target:Object):Object {
var ret:Object = annotations[target];
if (ret == null) annotations[target] = ret = Object;
return ret;
}
}
}
用法
var o:Object = new Object();
Annotations.of(o).foo = 1234;
trace(Annotations.of(o).foo);//1234
请注意,这相对昂贵,但实际上表现不错。 无论是弱键字典还是静态调用,在性能至关重要的情况下都应避免。
格里茨
back2dos
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.