快速业务通道

ASSetPropflags() — 没有MM官方文档的隐藏函数

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


由于在Toolkit.checkType( )方法中用到了这个东东,因此俺找了些资料来补充说明一下! 原文地址:http://www.devarticles.com/c/a/Flash/Undocumented-ActionScript-Flash-Hack/ 每个人都想知道没有正式文档的ActionScript。从全局属性_global property中找出那些Macromedia还未准备正式支持的好东东。 你经常想检查一个对象的属性以完成更大的目标。例如,出于调试目的,你可能想在输出面板中列出一个对象的属性。或者你可能想破译一个对象返回的未知属性,比方说,一个服务器端调用,因此你可以聪明地解析数据。当然,我们还想枚举(列出)ActionScript的隐藏属性,从中看一看我们是否可以找到些未经证实的好东东。 ActionScript基本的for...in循环可以有效地告诉Flash解释器“看一下这个感兴趣的对象,并找出它的每个属性(包括存储在属性中的方法),仅执行一次循环体。并且,当你干个不停的时候,告诉我当前属性的名字。” 然而,许多ActionScript的内建方法和属性在默认情况下通过for...in循环是不可枚举的。Macromedia假设你想看到只是在你的代码中所创建的对象和属性,而不那些用于底层支持的ActionScript,因此在通过for...in枚举时他们隐藏许多内建属性。然而,无文档的ASSetPropflags()函数可以使属性和方法可见,即使它们平时在是不可枚举的。 正如其名所示,ASSetPropFlags()允许你在ActionScript中设置属性标记。这些标记会告诉Flash Player是否在for...in循环中枚举指定的方法和属性。 你同样可以使用ASSetPropFlags( )来使你指定对象的属性和方法不可写(或者不可枚举),以防止有人在不经意间重写它们。这特别适用于在你发布的组件中所使用的全局属性,以防止与使用在同一个SWF中的其他第三方组件发生冲突。 让我们看一下它是如何工作的。 ASSetPropFlags( )采用一下形势:
ASSetPropFlags(object, properties, setTrue, setFalse) 其中: object 你想检查的对象或范围。 properties 你想改变其保护标记的属性或方法。你也可以将该项设置为null,这将起到通配符的作用“全部属性”。 setTrue 一个用于指定配置标记的整数形式的二进制编码。这个整数的最后三位是最重要的,而且表示(从左至右)“重写保护”、“删除保护”、“隐藏”。例如,将setTrue设置为二进制110(十六进制06或十进制6)维持重写和删除保护,但是不隐藏通过properties所指定的属性。 setFalse 另一个整数形式的二进制编码,用起来类似setTrue,只是它将属性设置为falsesetFalse二进制编码在应用setTrue之前被使用。 你想使全局_global范围的属性或方法可见,其中包含了全部内建的ActionScript类。因此我们可以在一个for...in循环中枚举ActionScript中的全部类的集合:
ASSetPropFlags(_global, null, 6, 1); 以下代码将所有的ActionScript设置为不可隐藏,然后找出所有可以找到的类:
// 将保护标记设置为110以便在_global范围内暴露每件事物
ASSetPropFlags(_global, null, 6, 1);
// 列出在_global范围内的全部对象
for (thisObject in _global) {
trace(thisObject);
}为了看一下那些类中是否有些有趣的东东,我们可以依次查看那些类的每一个属性。如果我们偶然发现prototype属性——其中保存着该类的属性和方法(无论用于ActionScript 1.0还是2.0)——查看其属性和方法将会发现一些有趣的东东藏在哪里:
// 将保护标记设置为110以便在_global范围内暴露每件事物
ASSetPropFlags(_global, null, 6, 1);
// 列出在_global范围内的全部对象
for (thisObject in _global) {
// 暴露每个对象
ASSetPropFlags(

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号