FLASH下载

设为首页
繁體中文
闪客留言

 首页 | FLASH动画 | FLASH专辑 | FLASH短片 | FLASH游戏 | FLASH歌曲 | FLASH教程 | Flash播放器代码
您当前的位置:flash下载 -> FLASH教程 -> AS教程 -> 文章内容  
栏目导航 相关文章
· FLASH基础 · FLASH实例教程
· FLASH技巧 · AS教程
·[组图]Flash MX一步步跟我...
·[组图]Flash遮罩特效实例-...
·[组图]Flash遮罩特效实例-...
·FLASH游戏制作精选实...
·[组图]用Flash打造迷你Win...
·[图文]Flash8 Blendmode—...
·Flash9.0播放器
·[图文]Flash 5 绘制螺旋图...
·[图文]Flash 5 精确下载制...
·[图文]用 Flash 5 编程制作...


Flash:可添加二级树半功略

作者:转载  来源:[闪客]  发布时间:2006-5-22 21:27:15  编辑人:[FLASH教程]

减小字体 增大字体


先看我做好的:

新开窗口效果比较好

源文件

有个失误,减主菜单的时候名字忘了减了。
先讲讲我的思路,主要是利用几个变量:
menuNum ---主目录数
menuName_X ---第X个目录名
menu_X_childNum ---第X个目录的菜单数
menu_X_childName_Y ---第X个目录的第Y个菜单的名子
botton_X_Y_ulr ---第X个目录的第Y个菜单的连接地址
利用这几个变量循环出菜单。主要工作在层attmenu和attchild上。
edit层就是改变和储存这几个变量。
目前还在研究XML,想利用XML来储存这些数据。希望高手指点。
以下是FLA种的源程序加上我的注释,班门弄斧一下。
Layer:attmenu
    frame1:空,用于读取外部数据。
    frame2:

for(i=1;i<menuNum+1;i++){//取得主目录数目(menuNum),并循环复制按钮  attachMovie("unseeb","unseeb_"+i+"a",100+i) //复制不可见按钮用于主目录按钮的动作。  attachMovie("bover","menu_"+i,i); //复制动画按钮。  attachMovie("atext","atext"+i,200+i);//复制主目录上的按钮名称。  this["menu_"+i]._x=60+100*(i-1);//设置以上三个按钮载主场景的位置。  this["menu_"+i]._y=20;  this["unseeb_"+i+"a"]._x=60+100*(i-1);  this["unseeb_"+i+"a"]._y=20;  _root["atext"+i].name=eval("menuName_" + i);  _root["atext"+i]._x=30+100*(i-1);  _root["atext"+i]._y=12;}

Layer:attchild
    frame1-2:空,这两帧用于复制主目录
    frame3:

stop();//停止影片for(i=1;i<=menuNum;i++){//以主目录数目做循环 childNum=eval("menu_" + i +"_childNum");//分别获得每个主目录的菜单数目 for(j=1;j<childNum+1;j++){//以该主目录的菜单数目做循环  attachMovie("botton","botton_"+i+"_"+j,j+(i+2)*100);//复制菜单按钮  attachMovie("atext","atext_"+i+"_"+j,j+(i+102)*100);//复制菜单名称  this["botton_"+i+"_"+j]._x=60+100*(i-1);//设置以上两种按钮的属性(位置、不可见)  this["botton_"+i+"_"+j]._y=20+j*23;  this["botton_"+i+"_"+j]._visible=false;  this["atext_"+i+"_"+j]._x=20+100*(i-1);  this["atext_"+i+"_"+j]._y=12+j*23;  this["atext_"+i+"_"+j]._visible=false;  this["atext_"+i+"_"+j].name=eval("menu_"+i+"_childName_"+j);  //取得菜单名称并赋值给MC(atext)中的动态文本。 }//下一个子菜单}//下一个主目录

Layer:getnum:用于读取外部变量并将其转化为数值型。

Layer:edit:用于编辑各个目录以及菜单
    MC:
    edit (左下角):

onClipEvent(enterFrame){//监测不可见按钮是否在第2帧(是否处于激活状态)为可见  this._visible = false;  for (i=1;i<=_root.menuNum;i++){   if (_root["unseeb_"+i+"a"]._currentframe == 2){    this._visible = true;   }  }}

edit内的按钮:

on (release) {  for (i=1; i<=_root.menuNum; i++) {     if (_root["unseeb_"+i+"a"]._currentframe == 2) {              _root.editNum = i;     }   }    //监测哪一个按钮处于激活状态   _root.editbg._visible = true;//激活编辑界面   for(j=1;j<=eval("_root.menu_"+_root.editNum+"_childNum");j++){   //告诉编辑界面该目录的子菜单数目       eval("_root.editbg.intext_"+j)._visible=true;//告诉editbg循环出相应数目的input框       eval("_root.editbg.intext_"+j+"_url")._visible=true;    }    for(k=eval("_root.menu_"+_root.editNum+"_childNum")+1;k<=20;k++){       eval("_root.editbg.intext_"+k)._visible=false;       eval("_root.editbg.intext_"+k+"_url")._visible=false;    }    for(x=1;x<=20;x++){//读取子菜单默认值      eval("_root.editbg.intext_"+x).text=eval("_root.menu_"+_root.editNum+"_childName_"+x);       eval("_root.editbg.intext_"+x+"_url").text=eval("_root.botton_"+_root.editNum+"_"+x+"_url");    }    _root.editbg.menuName.text=eval("_root.menuName_"+_root.editNum);//读取主目录默认值}
editbg (右):
onClipEvent(load){   this._visible=false;}
    editbg内:
layer1:背景
layer2:循环20个文本框MC(intext),并给他们赋予名字以及位置。

for(j=1;j<=20;j++){   attachMovie("intext","intext_"+j,10000+j);   attachMovie("intext","intext_"+j+"_url",20000+j);   this["intext_"+j]._x=-150;   this["intext_"+j]._y=-225+23*(j-1);   this["intext_"+j+"_url"]._x=-40;   this["intext_"+j+"_url"]._y=-225+23*(j-1);   for(k=0;k<1;k++){      this["intext_"+j]._visible=false;      this["intext_"+j+"_url"]._visible=false;   }}
    ok按钮:赋值给各个变量
on(release){  _root["menuName_"+_root.editNum] = this.menuName.text  for(i=1;i<=eval("_root.menu_"+_root.editNum+"_childNum");i++){     eval("_root.menu_"+_root.editNum+"_childName_"+i) = this["intext_"+i].text;     eval("_root.botton_"+_root.editNum+"_"+i+"_url") =this["intext_"+i+"_url"].text;  }  _root.gotoAndPlay(1);  _root.editbg._visible = false;}

button:
+(左上):每单击一次主目录数目+1

on(release){   _root.menuNum+=1;   if (_root.menuNum>8) {       _root.menuNum=8;   }   _root.gotoAndPlay(1);}

_(左上):每单击一次主目录数目-1

on(release){  if (menuNum!=1){     _root["unseeb_"+menuNum+"a"].unloadMovie();     _root["menu_"+menuNum].unloadMovie();     _root["atext_"+menuNum].unloadMovie();     for(i=1;i<=eval("menu_"+menuNum+"_childNum");i++){       _root["botton_"+menuNum+"_"+i].unloadMovie();     }  }  _root.menuNum -=1;  if (_root.menuNum<=0 ){     _root.menuNum=1;  }  _root.gotoAndPlay(1);}

+(左下):每单击一次子目录数目+1

on(release){  for (i=1;i<=menuNum;i++){     if(_root["unseeb_"+i+"a"]._currentframe==2){       eval("menu_"+i+"_childNum") +=1;       if (eval("menu_"+i+"_childNum")>=20){eval("menu_"+i+"_childNum")=20;}              j=eval("menu_"+i+"_childNum");              attachMovie("botton","botton_"+i+"_"+j,j+(i+2)*100);              attachMovie("atext","atext_"+i+"_"+j,j+(i+102)*100);              this["botton_"+i+"_"+j]._x=60+100*(i-1);              this["botton_"+i+"_"+j]._y=20+j*23;     }  }} 


—(左下):每单击一次子目录数目-1

on(release){   for (i=1;i<=menuNum;i++){      if(_root["unseeb_"+i+"a"]._currentframe==2){          del = eval("menu_"+i+"_childNum");          if (del < 0){              del = 0 ;          }          _root["botton_"+i+"_"+del].unloadMovie();          _root["atext_"+i+"_"+del].unloadMovie();          eval("menu_"+i+"_childNum") -=1;          if (eval("menu_"+i+"_childNum") < 0 ){              eval("menu_"+i+"_childNum") =0 ;          }       }   }}
library : button:点击获得链接路径(变量button_X_Y)(X代表第几个目录,Y代表第几个菜单)

on(rollOver){  attachMovie("bover","bover",1);  attachMovie("brelease","brelease",2)}on(rollOut){  this.bover.unloadMovie();}on(release){  this.brelease.play();  url = this._name+"_url";  getURL(_root[url],"_blank");}on(releaseOutside){  this.bover.unloadMovie();}

unseeb:控制激活状态的该按钮只能有一个

on(release){  name = this._name;  which = name.slice(7,-1);  howmuch = _root["menu_"+which+"_childNum"];  for(j=1;j<=howmuch;j++){     _root["atext_" + which +"_"+j]._visible = true;     _root["botton_"+which +"_"+j]._visible = true;  }  for(i=1;i<=_root.menuNum;i++){    if (i==which){       continue;    }    for(j=1;j<=_root["menu_"+i+"_childNum"];j++){       _root["botton_"+i+"_"+j]._visible = false;       _root["atext_"+i+"_"+j]._visible = false;    }    _root["unseeb_"+i+"a"].gotoAndStop(1);  }  gotoAndStop(2);}

[] [返回上一页] [打 印]
上一篇文章:缓冲公式小应用
下一篇文章:缓冲效果字
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [查看评论>>>]