Actionscript 3 在AS3中从库中加载和卸载内容

Actionscript 3 在AS3中从库中加载和卸载内容,actionscript-3,flash,Actionscript 3,Flash,我正在做一个flash项目,但我不熟悉actionscript。 我在主页上有一个菜单,我想在单击菜单项时显示其他页面 我知道如何从库中加载movieclips,但我不知道如何指定它们在屏幕上的位置,以及如何使它们出现在特定的层中 单击菜单的另一项时是否需要卸载以前的内容? 如果我不卸载它们,它们会互相堆叠并使程序变得沉重吗 我为每个菜单项添加了一个层,并在每个菜单项中添加了以下代码(每个菜单项都有一个不同的类): 我在第一帧中放置了一个图像作为主页。然后,我把一些按钮分别放在不同的图层上。为了

我正在做一个flash项目,但我不熟悉actionscript。 我在主页上有一个菜单,我想在单击菜单项时显示其他页面

我知道如何从库中加载movieclips,但我不知道如何指定它们在屏幕上的位置,以及如何使它们出现在特定的层中

单击菜单的另一项时是否需要卸载以前的内容? 如果我不卸载它们,它们会互相堆叠并使程序变得沉重吗

我为每个菜单项添加了一个层,并在每个菜单项中添加了以下代码(每个菜单项都有一个不同的类):

我在第一帧中放置了一个图像作为主页。然后,我把一些按钮分别放在不同的图层上。为了在单击每个按钮时加载页面,我添加了上述代码


当我点击按钮A时,页面A被加载,当我点击按钮B时,页面B被加载,依此类推。我怎样才能再次看到主页?我已经为主页添加了一个按钮,但由于某些原因,我不知道从库中加载什么,它位于第一个框架中,并且未加载内容。我的问题是如何删除加载的内容,以便再次看到主页?当我点击每个按钮然后加载新内容时,是否应该删除以前加载的所有内容

从库中加载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
定位加载的剪辑:

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
删除加载的剪辑:

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
将剪辑放置在特定的“层”(索引):

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
更新:要回答您的最新问题,是的,您应该在添加新剪辑之前删除先前加载的剪辑。然后,当您想再次显示主图像时,只需删除当前加载的剪辑即可

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);
    }
}

请发布一些代码来演示您当前的尝试。感谢您的回复。这种定位方式安全吗?我的意思是它在不同的屏幕分辨率上会变化吗?我怎样才能回到第一页?我的第一页是放置在第一帧中的图像。对不起,我不太理解您的其他后续问题。谢谢。关于我的另一个问题,如果我用x和y定位加载的剪辑,它的位置在不同分辨率的屏幕上会改变吗?(我想不会吧?)有更好的定位方法吗?这个有点难确定!我建议您在AS3中找到流体/液体布局的教程(只有一个示例:)。谢谢您的建议。我在删除加载的内容时仍然有问题。我不知道如何检查是否加载了任何内容,然后将其删除!