注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
没有相关文章
您现在的位置: 顶尖设计 >> IT学院 >> 图形 >> 网页 >> flash >> 基础教学 >> 文章正文
场景扫描函数
作者:CYJB  来源:闪吧  点击:  更新:2005-8-19
简介:
场景扫描函数,可以扫描场景或某一影片剪辑中的所有对象,并通过XML对象返回结果!使用XML是为了更好的和Tree组件结合,而Tree组件则可以很好的体现出层次关系!
点击浏览该文件

函数:
//扫描主函数,用于扫描
//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}
}

使用时,直接调用 scan(_root,"main")即可!(可以修改execpt函数和getData函数)






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务