显然visible = false;
不会影响孩子的可见属性,除非他们实际上不可见。我可以使用什么技术来禁用父精灵及其子女及其子女的孩子等?
P.s。:似乎ActionScript 3中缺少此功能。
答案 0 :(得分:0)
我认为你误解了可见财产的目的。
据Adobe称,Visible确定:
显示对象是否可见。禁用显示不可见的对象。例如,如果InteractiveObject实例的visible = false,则无法单击它。
这并不意味着它会阻止其他事件处理程序(如Event.ENTER_FRAME
)触发。如果依靠visible
禁用元素,则必须在从该显示对象触发事件之前验证此值实际上是true
。
这不起作用,虽然父精灵不可见,但未绘制子项,此属性的值仍然为真。
...
如果儿童被禁用,我无法轻易检查:if(visible)
如果要将父DisplayObject的可见性设置为false并期望它传播到其所有子项,那么您就错了。只有父级的可见性标志将保持为false。您应该通过检查其父项来验证子项的可见性:
if(parent.visible) {
//perform logic here...
}
答案 1 :(得分:0)
要获得所有孩子的孩子,您可以使用:
function getAllChildChilds(source : DisplayObjectContainer) : Array {
var returnArr:Array = [];
getAllChildChildsIntern(source, returnArr, new int(), new int());
return returnArr;
function getAllChildChildsIntern(container : DisplayObjectContainer, childArr : Array, i : int, j : int) : void {
j = container.numChildren;
for (i = 0; i < j; i++) {
var child : * = container.getChildAt(i);
if (child is DisplayObjectContainer) {
var mc : DisplayObjectContainer= child;
childArr.push(mc);
getAllChildChildsIntern(mc, childArr, new int(), new int());
}
}
}}
用法: getAllChildChilds(MC); //返回一个包含mc所有子节点和子节点子节点的数组。 (mc本身不在数组中)
安德烈亚斯回答了其他一切。