好了,所以這裏是設置:動作的孩子中3的addChild並清除第一個孩子
在主時間軸我有一個菜單,這是一個MovieClip。該菜單由大約17個「按鈕」組成,每個按鈕指向站點的不同部分。點擊一個「按鈕」(2個示例:menu_bag_button,menu_trashbag_button),菜單將動畫,向左移動,並且2個庫項目(bag_container和close_btn)應顯示在「framecontainer」的右側。
然後,當菜單在左邊時,這個特定的按鈕不能重複菜單動畫,因此我做了一個if語句來查找它所在的框架,如果它在左邊,它只是清除framecontainer和再次加載內容。
問題是,當單擊另一個鏈接時,它需要執行以下兩件事之一:如果菜單位於未加載內容的中央,則需要將菜單右側設置爲動畫,並將內容/ close_btn放入「framecontainer」;或者,如果菜單位於左側,則需要清除「framecontainer」並加載相應的內容。我嘗試了很多東西,但由於所有這些按鈕都在「menu_mc」中,動作必須指向根,然後才能指向「framecontainer」,一切都會變得複雜。
如果有一個快速,更好的方法來做到這一點,而不需要我編碼幾個小時,那將是非常棒的,否則我現在必須堅持這種複雜的方式。
這是我目前的代碼。它的功能很好,除了它不明確內容的事實,所以它繼續讓一個被關閉加載框架,還有它背後的其它內容:
import flash.display.*;
import fl.transitions.*;
import flash.events.MouseEvent;
//Stopping on this frame (805) so the menu will be in place to interact with
stop();
//framecontainer location/size for the content to be loaded.
//Not sure if the parameters below it are absolutely necessary.
var framecontainer:MovieClip = new MovieClip();
framecontainer.width = 450;
framecontainer.height = 450;
framecontainer.x = 450;
framecontainer.y = 0;
//adding the framecontainer so that the content can be loaded into it.
//again, not sure if this is necessary yet
MovieClip(root).addChild(framecontainer);
//FIRST MENU ITEM, "BAG"
//If we can get the framecontainer to work, I don't think I'll have to create
//a custom closeBtn for each and every link. I'll be able to just use a generic
//closeBtn and have it clear the framecontainer and continue the animation.
var closebagBtn:close_btn = new close_btn();
closebagBtn.x = 0;
closebagBtn.y = 0;
var bagFrame:MovieClip = new bag_frame_mc();
bagFrame.x = 900;
bagFrame.y = 0;
menu_bag_button.addEventListener(MouseEvent.MOUSE_UP, bagClick);
function bagClick(event:MouseEvent):void{
if(MovieClip(root).currentFrame == 850) {
// the next line does nothing, but it's supposed to clear
MovieClip(root).framecontainer.clear();
}
//Below, I need to add bagFrame and closebagBtn into framecontainer,
//but I don't know how. Tried adding ".framecontainer" in front of addchild
//but got error saying that bagClick (function above) is undefined.
else {
MovieClip(root).addChild (bagFrame);
MovieClip(root).addChild (closebagBtn);
MovieClip(root).gotoAndPlay(806);
}
}
closebagBtn.addEventListener(MouseEvent.MOUSE_UP, bagClose);
function bagClose (event:MouseEvent):void{
MovieClip(root).removeChild(bagFrame);
MovieClip(root).removeChild(closebagBtn);
MovieClip(root).gotoAndPlay(850);
}
//SECOND MENU ITEM, "TRASHBAG"
var closetrashbagBtn:close_btn = new close_btn();
closetrashbagBtn.x = 0;
closetrashbagBtn.y = 0;
var trashbagFrame:MovieClip = new trashbag_frame_mc();
trashbagFrame.x = 900;
trashbagFrame.y = 0;
menu_trashbag_button.addEventListener(MouseEvent.MOUSE_UP, trashbagClick);
function trashbagClick(event:MouseEvent):void{
if(MovieClip(root).currentFrame == 850) {
// the next line does nothing, but it's supposed to clear
MovieClip(root).framecontainer.clear();
}
//Below, I need to add trashbagFrame and closebagBtn into framecontainer,
//but I don't know how. Tried adding ".framecontainer" in front of addchild
//but got error saying that bagClick (function above) is undefined.
else {
}
else {
MovieClip(root).addChild (trashbagFrame);
MovieClip(root).addChild (closetrashbagBtn);
MovieClip(root).gotoAndPlay(806);
}
}
closetrashbagBtn.addEventListener(MouseEvent.MOUSE_UP, trashbagClose);
function trashbagClose (event:MouseEvent):void{
MovieClip(root).removeChild(trashbagFrame);
MovieClip(root).removeChild(closetrashbagBtn);
MovieClip(root).gotoAndPlay(850);
}
/////// ////////////////////////////////////////////////// ///// 新的,功能代碼(需要幫助精煉):
import flash.display.*;
import fl.transitions.*;
import flash.events.MouseEvent;
stop();
var menuList:Array = [menu_bag, menu_chips, menu_coke, menu_cup, menu_deodorant, menu_fork, menu_knife, menu_lighter, menu_milk, menu_pill, menu_rings, menu_shampoo, menu_spoon, menu_straw, menu_toothbrush, menu_trashbag, menu_water];
var closeBtn:close_btn = new close_btn();
closeBtn.x = 0;
closeBtn.y = 0;
closeBtn.addEventListener(MouseEvent.MOUSE_UP, contentClose);
function contentClose (event:MouseEvent):void{
while(MovieClip(root).numChildren > 1)
{
MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
}
MovieClip(root).gotoAndPlay(850);
}
var bagFrame:MovieClip = new bag_frame_mc();
bagFrame.x = 900;
bagFrame.y = 0;
menu_bag.addEventListener(MouseEvent.MOUSE_UP, bagClick);
function bagClick(event:MouseEvent):void{
if(MovieClip(root).currentFrame == 850) {
while(MovieClip(root).numChildren > 1)
{
MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
}
MovieClip(root).addChild (bagFrame);
MovieClip(root).addChild (closeBtn);
}
else {
MovieClip(root).addChild (bagFrame);
MovieClip(root).addChild (closeBtn);
MovieClip(root).gotoAndPlay(806);
}
}
var trashbagFrame:MovieClip = new trashbag_frame_mc();
trashbagFrame.x = 900;
trashbagFrame.y = 0;
menu_trashbag.addEventListener(MouseEvent.MOUSE_UP, trashbagClick);
function trashbagClick(event:MouseEvent):void{
if(MovieClip(root).currentFrame == 850) {
while(MovieClip(root).numChildren > 1)
{
MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
}
MovieClip(root).addChild (trashbagFrame);
MovieClip(root).addChild (closeBtn);
}
else {
MovieClip(root).addChild (trashbagFrame);
MovieClip(root).addChild (closeBtn);
MovieClip(root).gotoAndPlay(806);
}
}
你是什麼意思,「它沒有工作」?你有錯誤/例外嗎?如果是這樣,它說了什麼? – Amarghosh 2010-05-25 08:37:12
你應該只問每個問題一件事。一次嘗試解決一個問題對您來說是完美的。根據你的喜好提出許多不同的問題,但是如果你保持每一個問題的重點,那麼你會得到更好的答案。 – 2010-05-25 10:20:26
對不起,我很含糊......我對此很陌生,所以我不知道如何提出這個問題。我會編輯一下 – steve 2010-05-25 10:43:07