actionscript-3 - 清除 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()
但是当单击第二个按钮时,什么也没有发生。单击第二个按钮后,我返回并再次单击第一个按钮,显示第二个功能。
解决方案
“我试图找出如何删除每个持有者的现有孩子,因为如果没有,所有这些图像将堆叠在一起”
是的,当你addChild
告诉 Flash 到"paste this on a new layer inside the target"
. 每一层称为深度级别。您可以使用getChildAt(x)
where x
is the layer number (first= 0
, second= 1
, third= 2
etc..)来访问特定的层/深度
示例:
假设您有一个用于显示所有图像的支架(例如:)。 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);
}
推荐阅读
- c++ - 使用 Stack 和 C++ 语言显示老鼠迷宫最终路径坐标
- python - 如何使用 SpaCy 更改自定义 NER 模型再训练的训练数据格式?
- kernel - 为什么 Linux 内核代码是 100Hz 但显示器刷新率可以是 60Hz
- javascript - 使用 Nodejs 构建推荐系统
- javascript - 如何在 p5js 中设置障碍,但您只能通过特定的门进入
- javascript - 将音频 numpy 数组发送到前端 Javascript 以播放声音?
- flutter - 自定义 youtube,如 appbar
- pandas - Pandas saving in text format
- .htaccess - 如何通过 .htacess 将根 URL 重定向到网站的另一个页面 URL?
- xamarin - 未经授权的访问异常 - 访问路径被拒绝 - API29