先看我做好的:
新開窗口效果比較好 源文件 有個(gè)失誤,減主菜單的時(shí)候名字忘了減了。 先講講我的思路,主要是利用幾個(gè)變量: menuNum ---主目錄數(shù) menuName_X ---第X個(gè)目錄名 menu_X_childNum ---第X個(gè)目錄的菜單數(shù) menu_X_childName_Y ---第X個(gè)目錄的第Y個(gè)菜單的名子 botton_X_Y_ulr ---第X個(gè)目錄的第Y個(gè)菜單的連接地址 利用這幾個(gè)變量循環(huán)出菜單。主要工作在層attmenu和attchild上。 edit層就是改變和儲(chǔ)存這幾個(gè)變量。 目前還在研究XML,想利用XML來儲(chǔ)存這些數(shù)據(jù)。希望高手指點(diǎn)。 以下是FLA種的源程序加上我的注釋,班門弄斧一下。 Layer:attmenu frame1:空,用于讀取外部數(shù)據(jù)。 frame2:
for(i=1;i<menuNum+1;i++){ //取得主目錄數(shù)目(menuNum),并循環(huán)復(fù)制按鈕 attachMovie("unseeb","unseeb_"+i+"a",100+i) //復(fù)制不可見按鈕用于主目錄按鈕的動(dòng)作。 attachMovie("bover","menu_"+i,i); //復(fù)制動(dòng)畫按鈕。 attachMovie("atext","atext"+i,200+i);//復(fù)制主目錄上的按鈕名稱。 this["menu_"+i]._x=60+100*(i-1); //設(shè)置以上三個(gè)按鈕載主場(chǎng)景的位置。 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:空,這兩幀用于復(fù)制主目錄 frame3:
stop(); //停止影片 for(i=1;i<=menuNum;i++){ //以主目錄數(shù)目做循環(huán) childNum=eval("menu_" + i +"_childNum"); //分別獲得每個(gè)主目錄的菜單數(shù)目 for(j=1;j<childNum+1;j++){ //以該主目錄的菜單數(shù)目做循環(huán) attachMovie("botton","botton_"+i+"_"+j,j+(i+2)*100); //復(fù)制菜單按鈕 attachMovie("atext","atext_"+i+"_"+j,j+(i+102)*100); //復(fù)制菜單名稱 this["botton_"+i+"_"+j]._x=60+100*(i-1); //設(shè)置以上兩種按鈕的屬性(位置、不可見) 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)中的動(dòng)態(tài)文本。 } //下一個(gè)子菜單 } //下一個(gè)主目錄 Layer:getnum:用于讀取外部變量并將其轉(zhuǎn)化為數(shù)值型。
Layer:edit:用于編輯各個(gè)目錄以及菜單 MC: edit (左下角):
onClipEvent(enterFrame){ //監(jiān)測(cè)不可見按鈕是否在第2幀(是否處于激活狀態(tài))為可見 this._visible = false; for (i=1;i<=_root.menuNum;i++){ if (_root["unseeb_"+i+"a"]._currentframe == 2){ this._visible = true; } } } edit內(nèi)的按鈕:
on (release) { for (i=1; i<=_root.menuNum; i++) { if (_root["unseeb_"+i+"a"]._currentframe == 2) { _root.editNum = i; } } //監(jiān)測(cè)哪一個(gè)按鈕處于激活狀態(tài) _root.editbg._visible = true; //激活編輯界面 for(j=1;j<=eval("_root.menu_"+_root.editNum+"_childNum");j++){ //告訴編輯界面該目錄的子菜單數(shù)目 eval("_root.editbg.intext_"+j)._visible=true; //告訴editbg循環(huán)出相應(yīng)數(shù)目的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++){ //讀取子菜單默認(rèn)值 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);//讀取主目錄默認(rèn)值 }
editbg (右):
onClipEvent(load){ this._visible=false; }
editbg內(nèi): layer1:背景 layer2:循環(huán)20個(gè)文本框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按鈕:賦值給各個(gè)變量 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: +(左上):每單擊一次主目錄數(shù)目+1
on(release){ _root.menuNum+=1; if (_root.menuNum>8) { _root.menuNum=8; } _root.gotoAndPlay(1); }
_(左上):每單擊一次主目錄數(shù)目-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); } +(左下):每單擊一次子目錄數(shù)目+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; } } }
—(左下):每單擊一次子目錄數(shù)目-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:點(diǎn)擊獲得鏈接路徑(變量button_X_Y)(X代表第幾個(gè)目錄,Y代表第幾個(gè)菜單)
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:控制激活狀態(tài)的該按鈕只能有一個(gè)
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); }
出處:藍(lán)色理想
責(zé)任編輯:無意
◎進(jìn)入論壇Flash專欄版塊參加討論
|