2014-04-08 36 views
1

我正在做一個flash項目,但我對ActionScript很陌生。 我在主頁面有一個菜單,當我點擊菜單項時,我想讓其他頁面出現。在AS3中加載和卸載庫中的內容

我知道如何從庫中加載動畫片段,但我不知道如何在屏幕上指定它們的位置以及如何使它們出現在特定圖層中。

當我點擊另一項菜單時是否需要卸載以前的內容? 他們會堆疊在一起,並使程序沉重,如果我不卸載它們?!

我已經添加用於每個菜單項的層和加入它們中的每以下代碼(對於每一個項目存在不同類):

import flash.display.MovieClip; 

btn_msg.addEventListener(MouseEvent.CLICK, ShowMessegePage); 

function ShowMessegePage(event:MouseEvent):void 
{ 
var msg_page:MessegePage = new MessegePage(); 
    addChild(msg_page); 

msg_page.x = 495; 
msg_page.y = 323; 

} 

我已經放置在圖像中的第一幀作爲主頁面。然後我將每個按鈕放在不同的圖層上。爲了加載一個頁面,同時點擊每個按鈕,我已經添加了上面的代碼。

當我點擊按鈕A時,頁面A被加載,當我點擊按鈕B時,頁面B被加載等等。我怎樣才能再次看到主頁面?我爲主頁面添加了一個按鈕,但由於某些原因,我不會從庫中加載它,而是在第一幀中加載內容。我的問題是如何刪除加載的內容,以便我可以再次看到主頁面?當我點擊每個按鈕然後加載新內容時,是否應刪除以前加載的每個內容?從文庫

+0

請張貼一些代碼來證明你目前的嘗試。 – Marcela

回答

2

加載的MovieClip:

var mc:MovieClip = new MyClipID(); 
parentLayer.addChild(mc); // parentLayer can be any DisplayObjectContainer, even the stage 

定位加載的片段:

mc.x = 15; 
mc.y = 30; 

卸下裝載的片段:

if(mc.parent) 
{ 
    mc.parent.removeChild(mc); 
} 

在一個特定的「層」將剪輯(指數):

parentLayer.addChildAt(mc, 0); // this will place it behind everything on parentLayer 

UPDATE:要回答你的最新的問題,是的,你應該加入之前刪除先前加載的剪輯新的一個。然後,當您想要再次顯示主圖像時,您可以刪除當前加載的剪輯。

UPDATE2:保持該頁面當前加載跟蹤和顯示一個新的頁面之前刪除它的一個例子:

import flash.display.MovieClip; 
import flash.display.DisplayObject; 

var currentPage:DisplayObject; 

btn_msg.addEventListener(MouseEvent.CLICK, ShowMessagePage); 
btn_msg2.addEventListener(MouseEvent.CLICK, ShowMesssagePage2); 

function ShowMessagePage(event:MouseEvent):void 
{ 
    removeCurrentPage(); // remove the old page 
    var msg_page:MessagePage = new MessagePage(); 
     addChild(msg_page); 

    msg_page.x = 495; 
    msg_page.y = 323; 
    currentPage = msg_page; // keep track of the current page 
} 

function ShowMessagePage2(event:MouseEvent):void 
{ 
    removeCurrentPage(); // remove the old page 
    var msg_page2:MessagePage2 = new MessagePage2(); 
     addChild(msg_page2); 

    msg_page2.x = 495; 
    msg_page2.y = 323; 
    currentPage = msg_page2; // keep track of the current page 
} 

function removeCurrentPage():void 
{ 
    if(currentPage && currenPage.parent) 
    { 
     currentPage.parent.removeChild(currentPage); 
    } 
} 
+0

感謝您的回覆。這種定位方式是否安全?我的意思是它在不同的屏幕分辨率上發生變化我怎樣才能返回到第一頁?我的第一頁是放置在第一幀的圖像。 – user3400679

+0

對不起,我不太瞭解你的其他後續問題。 – Marcela

+0

好的,我編輯了我的問題並添加了更多細節。 – user3400679