1

显然visible = false;不会影响孩子们的可见属性,除了他们实际上是不可见的。我可以使用什么技术来禁用父精灵及其子精灵及其子精灵等?

  • 禁用一个精灵及其所有孩子
  • 启用一个精灵及其所有孩子
  • 不要将其从舞台上移除
  • 当父母和孩子被禁用时,阻止他们的事件

Ps:ActionScript 3 中好像没有这个功能。

4

2 回答 2

0

我认为您误解了可见属性的目的。


根据 Adob​​e 的说法,Visible 确定:

显示对象是否可见。不可见的显示对象被禁用。例如,如果 InteractiveObject 实例的 visible=false,则无法单击它。

这并不意味着它会阻止其他事件处理程序,例如Event.ENTER_FRAME触发。如果您依赖于禁用元素,则还必须在从该显示对象触发事件之前visible验证该值是否确实存在。true


好吧,尽管父精灵不可见,但没有绘制子精灵,但这不起作用,该属性的值仍然为真。

...

我无法轻松检查儿童是否残疾:如果(可见)

如果您将父 DisplayObject 的可见性设置为 false 并期望它传播到它的所有子对象,那您就错了。只有父母的可见性标志将保持为假。您应该通过检查其父级来验证子级的可见性,如下所示:

if(parent.visible) {
    //perform logic here...
}
于 2013-08-17T20:14:58.053 回答
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 本身不在数组中)

安德烈亚斯回答了其他所有问题。

于 2013-08-18T18:36:10.900 回答