| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
免费的移动数码扫
网络新生领域扫描
2007年个人网站前
flash场景之间相互
如何用鼠标左右键
MC里的按钮转换场
控制播放加载的MC
场景转换—之二
Flash光效果之扫描
基础知识:网络安

场景扫描函数           

场景扫描函数

作者:佚名 来源:不详 更新:2007-1-13 20:46:12 错误报告 我要投稿
场景扫描函数,可以扫描场景或某一影片剪辑中的所有对象,并通过XML对象返回结果!使用XML是为了更好的和Tree组件结合,而Tree组件则可以很好的体现出层次关系!
点击浏览该文件 (纯AS扫描)
点击浏览该文件

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

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。