首页 > 解决方案 > 清除 DisplayObject() 而不给出对象名称

问题描述

我正在尝试做一个 Flash 应用程序,当单击第一个按钮时,displayObject 函数将显示图像。当第二个按钮点击时,前一个持有者需要清除里面的所有对象,这是我坚持的部分。有什么解决办法吗?

function showOppo (e:Event):void
{
    if(holder_1.stage)
    {
    holder_1 = new MovieClip();
    holder_2 = new MovieClip();
    holder_3 = new MovieClip();
    }
    holder_1.x = 37.6;
    holder_1.y = 133.05;
    holder_2.x = 458.55;
    holder_2.y = 133.05;

    Of9.scaleX = 1;
    Of9.scaleY = 1;
    Ofx.scaleX = 1;
    Ofx.scaleY = 1;

    holder_1.addChild(Of9);
    holder_2.addChild(Ofx);

    stage.addChild(holder_1);
    stage.addChild(holder_2);

    stage.setChildIndex(holder_1,1);
    stage.setChildIndex(holder_2,1);
}
function showsamsung (e:Event):void
{
    if(holder_1.stage)
    {
    holder_1 = new MovieClip();
    holder_2 = new MovieClip();
    holder_3 = new MovieClip();
    }
    holder_1.x = 37.6;
    holder_1.y = 133.05;
    holder_2.x = 458.55;
    holder_2.y = 133.05;

    Sgn9.scaleX = 1;
    Sgn9.scaleY = 1;
    Ss10.scaleX = 1;
    Ss10.scaleY = 1;

    holder_1.addChild(Sgn9);
    holder_2.addChild(Ss10);

    stage.addChild(holder_1);
    stage.addChild(holder_2);

    stage.setChildIndex(holder_1,1);
    stage.setChildIndex(holder_2,1);
}

在我使用的代码内部,new MovieClip()但是当单击第二个按钮时,什么也没有发生。单击第二个按钮后,我返回并再次单击第一个按钮,显示第二个功能。

标签: actionscript-3flash

解决方案


“我试图找出如何删除每个持有者的现有孩子,因为如果没有,所有这些图像将堆叠在一起”

是的,当你addChild告诉 Flash 到"paste this on a new layer inside the target". 每一层称为深度级别。您可以使用getChildAt(x)where xis the layer number (first= 0, second= 1, third= 2etc..)来访问特定的层/深度

示例:
假设您有一个用于显示所有图像的支架(例如:)。 holder_1

  • 1)第一次你将添加一个图像,holder_1.addChild(pic1);
    所以现在pic1存在于(层)级别 0内的目标holder_1

  • 2)添加第二个图像,holder_1.addChild(pic2);
    所以现在pic2存在于(层)级别 1的目标内部holder_1

现在两个图像堆叠在同一个容器内的不同层上。怎么修?考虑这个逻辑:

holder_1.addChild(pic2); //add pic2 into holder (at level 0)
holder_1.removeChildAt(0); //remove anything at level 0 (...is pic2)
holder_1.addChild(pic1); //add different pic1 into holder (at level 0)

您的代码可以尝试这样的事情:

holder_1 = new MovieClip();
holder_2 = new MovieClip();
holder_3 = new MovieClip();

holder_1.x = 37.6;  holder_2.x = 458.55;

//# give multiple VARS the same value   
holder_1.y = holder_2.y = 133.05;

stage.addChild(holder_1);
stage.addChild(holder_2);

btnoppo.addEventListener(MouseEvent.CLICK,showOppo);
btnsamsung.addEventListener(MouseEvent.CLICK,showsamsung);

function showOppo (e:Event):void
{
    //# set multiple at once to value = 1
    Of9.scaleX = Of9.scaleY = Ofx.scaleX = Ofx.scaleY = 1;

    //# check if already has image & remove it
    if(holder_1.getChildAt(0) != null) { holder_1.removeChildAt(0); }
    if(holder_2.getChildAt(0) != null) { holder_2.removeChildAt(0); }

    holder_1.addChild(Of9); holder_2.addChild(Ofx);

}
function showsamsung (e:Event):void
{
    Sgn9.scaleX = Sgn9.scaleY = Ss10.scaleX = Ss10.scaleY = 1;

    //# check if already has image & remove it
    if(holder_1.getChildAt(0) != null) { holder_1.removeChildAt(0); }
    if(holder_2.getChildAt(0) != null) { holder_2.removeChildAt(0); }

    holder_1.addChild(Sgn9); holder_2.addChild(Ss10);

}

推荐阅读