今天看 优化 Flash 平台的性能 帮助文档时发现一个未公开的顶级函数 getSize()。
猜想getSize的接口可能是:
/**
* 获取对象的内存占用量
* @param p 任意类型,甚至是Class
* @return 一个数值,单位是byte
*/
public function getSize(p:*):uint;
不过这个方法只能在时间轴上使用,在类里就不能用了。
感谢jim提醒,原来这个方法在flash.sampler包下,请看 flash.sampler.getSize() 。
然后我测试了下flash里有没有内存对齐的概念。
不过获得的内存值都是4的倍数。
如果里面有属性占用为8,则结果则为8的倍数。
相关链接:
节省内存-显示对象
节省内存-原始类型
在Flash IDE里做一些重复劳动用jsfl是个很好的解决办法,这里有中文帮助。
当然也可以配合Flash的历史面板来学习(Ctrl+F10 或者 Window=>Other Panels=>History)
不过这个也不是全都能用的,在不同的Flash 版本上也会出现不同的灵异事件。
fl.getDocumentDOM().selection 选择图形
先在flash里画一个简单图形(选中后会出现类似下图的网状遮罩)
// 选中舞台上所有对象
fl.getDocumentDOM().selectAll();
// 获取选中对象数组
var arr = fl.getDocumentDOM().selection;
// 取消选择
fl.getDocumentDOM().selectNone();
// 设置选中对象为刚获取的对象数组,
// 但是这个操作在Flash CS5里会忽略 简单图形(Shape,不是组,也不是绘制对象)
// 在Flash CS4里却没有这样的问题
fl.getDocumentDOM().selection = arr;