显然visible = false;
不会影响孩子们的可见属性,除了他们实际上是不可见的。我可以使用什么技术来禁用父精灵及其子精灵及其子精灵等?
- 禁用一个精灵及其所有孩子
- 启用一个精灵及其所有孩子
- 不要将其从舞台上移除
- 当父母和孩子被禁用时,阻止他们的事件
Ps:ActionScript 3 中好像没有这个功能。
显然visible = false;
不会影响孩子们的可见属性,除了他们实际上是不可见的。我可以使用什么技术来禁用父精灵及其子精灵及其子精灵等?
Ps:ActionScript 3 中好像没有这个功能。
我认为您误解了可见属性的目的。
根据 Adobe 的说法,Visible 确定:
显示对象是否可见。不可见的显示对象被禁用。例如,如果 InteractiveObject 实例的 visible=false,则无法单击它。
这并不意味着它会阻止其他事件处理程序,例如Event.ENTER_FRAME
触发。如果您依赖于禁用元素,则还必须在从该显示对象触发事件之前visible
验证该值是否确实存在。true
好吧,尽管父精灵不可见,但没有绘制子精灵,但这不起作用,该属性的值仍然为真。
...
我无法轻松检查儿童是否残疾:如果(可见)
如果您将父 DisplayObject 的可见性设置为 false 并期望它传播到它的所有子对象,那您就错了。只有父母的可见性标志将保持为假。您应该通过检查其父级来验证子级的可见性,如下所示:
if(parent.visible) {
//perform logic here...
}
要获取所有孩子的孩子,您可以使用以下命令:
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 本身不在数组中)
安德烈亚斯回答了其他所有问题。