这可能听起来很愚蠢,但我怎样才能从舞台上移除一个明确的孩子? e.g。
function giveMeResult(e:MouseEvent):void
{
if(stage.contains(result))
{removeChild(result);}
addChild(result); // this part works fine, but it adds one over another
}
它在前一个的顶部添加了一个结果。
我希望功能“giveMeResult:删除”结果“如果在舞台上并添加一个新结果。
更新: * 的 结果是TextField,result.txt =“”不时变化......
trace (result.parent); /// gives [object Stage]
trace (result.stage); /// gives[object Stage]
trace (result.parent != null && result.parent == result.stage); // gives true
当
result.parent.removeChild(result);
是在没有if语句的情况下编写的 - 给出错误 TypeError:错误#1009:无法访问空对象引用的属性或方法。
写在里面时:
if (result.parent !=null && result.parent == result.stage)
{
result.parent.removeChild(result);
}
没有任何反应,并且在前一个孩子的顶部添加了新的孩子。
感谢所有人! 结果很简单:) 我所要做的就是改变result.txt,甚至不用从舞台上删除它:)
答案 0 :(得分:2)
您需要输入stage.removeChild(result);
,然后输入stage.addChild(result);
编辑:
查看与您类似的功能:
private function func(e:Event) : void {
if(stage.contains(result)) {
stage.removeChild(result);
}
stage.addChild(result);
}
这将向舞台添加TextField result
的新实例而不删除旧实例的唯一方法是,如果结果已更改。请参阅此执行流程:
var result : TextField = new TextField();
// An event occurs and func get's called.
// now result will be added to stage.
result = new TextField();
// An event occurs and func get's called again
// This time the stage.contains(..) will return false, since the current result
// is not actually on stage. This will add a second TextField to the stage.
答案 1 :(得分:1)
如果我清楚地了解您的需求,那么此代码可以帮助您:
if (result.parent != null && result.parent == result.stage)
{
// stage itself contains result
result.parent.removeChild(result);
}
答案 2 :(得分:1)
来自DisplayObjectContainer.contains()的文档:“孙子,曾孙等等每一个都回归真实。”
因此,包含显示列表中的任何位置,而不仅仅是直接子项。你想要的是Manque指出的父检查,或者只是从任何地方删除结果:
if (result.parent) {result.parent.removeChild(result); }
虽然奇怪的是,addChild(result)会自动将其从前一个父项中删除 - 一次DisplayObject只能位于DisplayList中的一个位置,所以我不确定为什么你会看到多个结果......
你传入的“结果”是否可能不是舞台上的结果?
答案 3 :(得分:0)
你试过吗?
MovieClip(root).removeChild(result)
[编辑]
function giveMeResult(e:MouseEvent):void{
if(result.parent != null && result.parent == result.stage){
stage.removeChild(result);
}
stage.addChild(result);
}
答案 4 :(得分:0)
我所要做的就是改变result.txt,甚至不用从舞台上删除它