/* 扫描函数 v1.0 用于扫描场景或某一影片剪辑中的所有对象 作者:闪吧CYJB f8cyjb@126.com 欢迎来到 闪吧 http://www.flash8.net 我的blog http://fscyjb.blogdriver.com */ //扫描主函数,用于扫描 //mc :要扫描的影片剪辑 name :XML对象的父节点名称 function scan(mc:MovieClip, name:String):XML { mc = (mc == undefined) ? _root : mc; name = (name == undefined) ? "Movie" : name; var children:Array = []; children[0] = [mc]; var xml:XML = new XML(); var xmls:Array = []; xmls[0] = [xml.addTreeNode(name)]; while (children.length>0) { children.push(new Array()); xmls.push(new Array()); for (var i in children[children.length-2][0]) { if (execpt(children[children.length-2][0], i)) { if (typeof children[children.length-2][0][i] == "movieclip") { children[children.length-1].push(children[children.length-2][0][i]); xmls[children.length-1].push(xmls[children.length-2][0].addTreeNode(i,getData(children[children.length-2][0], i))); }else{ xmls[children.length-2][0].addTreeNode(i,getData(children[children.length-2][0], i)) } } } children[chlidren.length-2].splice(0, 1); xmls[chlidren.length-2].splice(0, 1); if (children[chlidren.length-2].length == 0) { children.splice(chlidren.length-2, 1); xmls.splice(chlidren.length-2, 1); } if (children[children.length-1].length == 0) { children.pop(); xmls.pop(); } } return xml; } //扫描排除函数,用于排除一些无须扫描的对象 //mc :要扫描的影片剪辑 name :XML对象的父节点名称 //excepts :当使用任何一个组件是,会向每个影片剪辑中添加的无用对象 function execpt(mc:MovieClip, name:String):Boolean { var result:Boolean = true; var excepts:Array = ["setStyle", "notifyStyleChangeInChildren", "changeColorStyleInChildren", "changeTextStyleInChildren", "getStyle", "getStyleName", "_getTextFormat", "__getTextFormat", "destroyObject", "createEmptyObject", "createClassObject", "createObject", "createLabel", "getTopLevel", "buildDepthTable", "getDepthByFlag", "shuffleDepths", "findNextAvailableDepth", "setDepthBelow", "setDepthAbove", "setDepthTo", "createChildAtDepth", "createClassChildAtDepth", "tabEnabled", "tabChildren", "focusManager", "height", "width", "$version", "reserved", "focusManager"]; for (var i in excepts) { if (name == excepts[i]) { result = false; } } return result; } //扫描书局函数,用于指定扫描时需要获取的有关信息 //mc :要扫描的影片剪辑 name :XML对象的父节点名称 function getData(mc:MovieClip, name:String):Object { return {x:mc[name].x,y:mc[name].y} }