主题:  看不明白这代码,请帮忙解释一下!

路过的猪

职务:普通成员
等级:2
金币:1.0
发贴:334
注册:2001/7/13 9:21:38
#12002/1/25 11:10:41
if (treeRoot == null) {
treeRoot = this;
branchCount = 0;
}
this.levelCount += 1;
treeRoot.BranchCount += 1;
var newBranchName = treeRoot._name+"Branch"+treeRoot.BranchCount;
this.attachMovie("mcBranchClass", newBranchName, this.levelCount);
var newBranch = eval(newBranchName);
newBranch._y -= 144;
newBranch._rotation += (5*random(19))-45;
newBranch.levelCount = 0;
newBranch.treeRoot = this.treeRoot;



redsteps

职务:普通成员
等级:1
金币:1.0
发贴:144
注册:2002/1/7 22:28:32
#22002/1/25 11:40:14
treeRoot、branchCount、evelCount都是自定义的变量名字
newBranch看起来好像是一个分形或者自复制之类的需要自动寻找层次的东西



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
#32002/1/25 11:49:39
傻小仔在上个帖子中说
引用:
if (treeRoot == null) {
treeRoot = this;
branchCount = 0;
}
this.levelCount += 1;
treeRoot.BranchCount += 1;
var newBranchName = treeRoot._name+"Branch"+treeRoot.BranchCount;
this.attachMovie("mcBranchClass", newBranchName, this.levelCount);
var newBranch = eval(newBranchName);
newBranch._y -= 144;
newBranch._rotation += (5*random(19))-45;
newBranch.levelCount = 0;
newBranch.treeRoot = this.treeRoot;


其中treeRoot是用户自定义的一个对象名字,代表当前的mc
你最好把全部的action贴出来,要不然很难知道这是干什么的


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

路过的猪

职务:普通成员
等级:2
金币:1.0
发贴:334
注册:2001/7/13 9:21:38
#42002/1/25 13:15:40



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
#52002/1/25 14:10:21
傻小仔在上个帖子中说
引用:
源文件


请问你有什么不懂的地方啊


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

路过的猪

职务:普通成员
等级:2
金币:1.0
发贴:334
注册:2001/7/13 9:21:38
#62002/1/25 15:44:49
自定义变量的作用!
不过几呼都不懂!



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
注册:2002/1/6 14:44:13
#72002/1/25 16:10:30
傻小仔在上个帖子中说
引用:
自定义变量的作用!
不过几呼都不懂!

if (treeRoot == null) {
treeRoot = this;//自定义对象treeRoot为本mc
branchCount = 0;//定义变量branchCount的值是0
}
this.levelCount += 1;//变量levelCount加1,因原来为null,所有加1后为1,为防止产生多个mc时深度重合
treeRoot.BranchCount += 1;//变量branchCount值加1,为防止产生多个mc时重名
var newBranchName = treeRoot._name+"Branch"+treeRoot.BranchCount;//定义产生的下一个mc的名称
this.attachMovie("mcBranchClass", newBranchName, this.levelCount);//在本mc里复制自身
var newBranch = eval(newBranchName);//同第一句,自定义对象newBranch为刚复制的mc
newBranch._y -= 144;//设定newBranch的位置
newBranch._rotation += (5*random(19))-45;//随机变化一个角度
newBranch.levelCount = 0;//
newBranch.treeRoot = this.treeRoot;//作用同第一句,而且执行了这句就不再执行第一句
//由此可见,最后两句可以省略,而且判断语句里的第二句定义变量也可以省略
//this.levelCount += 1;
//treeRoot.BranchCount += 1
这两句应改为:
//levelCount ++;
//BranchCount ++;

//其实程序可以简化成这样:
    levelCount ++;
    BranchCount ++;
    newBranchName = "Branch"+BranchCount;
    attachMovie("mcBranchClass", newBranchName,levelCount);
    newBranch = eval(newBranchName);
    newBranch._y -= 144;
    newBranch._rotation += (5*random(19))-45;


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

路过的猪

职务:普通成员
等级:2
金币:1.0
发贴:334
注册:2001/7/13 9:21:38
#82002/1/26 15:12:13
goldgoat在上个帖子中说
//其实程序可以简化成这样:
    levelCount ++;
    BranchCount ++;
    newBranchName = "Branch"+BranchCount;
    attachMovie("mcBranchClass", newBranchName,levelCount);
    newBranch = eval(newBranchName);
    newBranch._y -= 144;
    newBranch._rotation += (5*random(19))-45; [/quote]

你简化后代码,看起来方便了很多!
newBranchName = "Branch"+BranchCount;
//设定新一个变量newBranchName等于Branch加上BranCount
这里的Branch是什么??(我很菜)



redsteps

职务:普通成员
等级:1
金币:1.0
发贴:144
注册:2002/1/7 22:28:32
#92002/1/27 18:58:58
这里是一个字符串
前面一半加上后面一半正好拼成一个完整的mc名字
明白了吗