先看我做好的:
新开窗口效果比较好
源文件
有个失误,减主菜单的时候名字忘了减了。
先讲讲我的思路,主要是利用几个变量:
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);
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器