0

How can I hide all children clips except a specific one with actionscript 3 ?

Thanks a lot for help.

Bizboss
  • 7,792
  • 27
  • 109
  • 174
  • yes man, I've found a solution here: http://stackoverflow.com/questions/4995421/hide-all-children-of-cs5-object-in-as3-code ;) – Bizboss Mar 02 '12 at 11:13

2 Answers2

1
for (var i:int = clip.numChildren - 1; i >= 0; i--) {
    clip.getChildAt(i).visible = false;
}

found at this link: Hide all children of CS5 object in AS3 code

Community
  • 1
  • 1
Bizboss
  • 7,792
  • 27
  • 109
  • 174
-1

Here is a method that I made that should make things simpler. You might want to package it since its quite a bit of code, but the good thing is that its reusable:

Main.as(document class):

package 
{
    import flash.display.DisplayObject;
    import flash.display.DisplayObjectContainer;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            // create a display object container then add 10
            // child display objects.

            var displayObjectContainer:Sprite = new Sprite();

            for (var i:int = 0; i < 10; i++)
            {
                var displayObject:Sprite = new Sprite(); 
                displayObject.name = "displayObject" + i;
                displayObjectContainer.addChild(displayObject);

            }// end for

            // examples :

            // hideAllDOInDOC(displayObjectContainer, exceptDisplayObjects:String);
            /*
            hideAllDOInDOC(displayObjectContainer, "displayObject8");
            var displayObject1:DisplayObject = 
                displayObjectContainer.getChildByName("displayObject1");
            var displayObject8:DisplayObject = 
                displayObjectContainer.getChildByName("displayObject8");
            trace(displayObject1.visible); // output: false
            trace(displayObject8.visible); // output: true
            */

            // hideAllDOInDOC(displayObjectContainer, exceptDisplayObjects:int);
            /*
            hideAllDOInDOC(displayObjectContainer, 7);
            var displayObject2:DisplayObject = 
                displayObjectContainer.getChildAt(2);
            var displayObject7:DisplayObject = 
                displayObjectContainer.getChildAt(7);
            trace(displayObject2.visible); // output: false
            trace(displayObject7.visible); // output: true
            */

            // hideAllDOInDOC(displayObjectContainer, exceptDisplayObjects:Vector.<String>);

            hideAllDOInDOC(displayObjectContainer, 
                           Vector.<String>(["displayObject4", "displayObject6"]));
            var displayObject2:DisplayObject = 
                displayObjectContainer.getChildByName("displayObject2");
            var displayObject4:DisplayObject = 
                displayObjectContainer.getChildByName("displayObject4");
            var displayObject6:DisplayObject = 
                displayObjectContainer.getChildByName("displayObject6");
            trace(displayObject2.visible); // output: false
            trace(displayObject4.visible); // output: true
            trace(displayObject6.visible); // output: true


            // hideAllDOInDOC(displayObjectContainer, exceptDisplayObjects:Vector.<int>);
            /*
            hideAllDOInDOC(displayObjectContainer, 
                           Vector.<int>([4, 6]));
            var displayObject2:DisplayObject = 
                displayObjectContainer.getChildAt(2);
            var displayObject4:DisplayObject = 
                displayObjectContainer.getChildAt(4);
            var displayObject6:DisplayObject = 
                displayObjectContainer.getChildAt(6);
            trace(displayObject2.visible); // output: false
            trace(displayObject4.visible); // output: true
            trace(displayObject6.visible); // output: true
            */

        }// end function

        // hideAll display objects in display object container
        private function hideAllDOInDOC(displayObjectContainer:DisplayObjectContainer,
                                        exceptDisplayObjects:Object):void
        {

            // if exceptDisplayObjects parameter is not of type
            // String, int, Vector.<String> or Vector.<int> then
            // throw ArgumentError

            if (!(exceptDisplayObjects is String) &&
                !(exceptDisplayObjects is int) &&
                !(exceptDisplayObjects is Vector.<String>) &&
                !(exceptDisplayObjects is Vector.<int>))
            {
                throw new ArgumentError(
                    "exceptDisplayObjects parameter must be either type String, int, Vector.<String> or Vector.<int>")

            }// end if

            // loop through display object container's children

            for (var i:int = 0; i < displayObjectContainer.numChildren; i++)
            {
                var displayObject:DisplayObject = displayObjectContainer.getChildAt(i);
                displayObject.visible = false; // hide display object

                if (exceptDisplayObjects is String)
                {
                    // reveal display object if it's name is the same as
                    // exceptDisplayObjects string value

                    if (displayObject.name == (exceptDisplayObjects as String))
                    {
                        displayObject.visible = true;

                    }// end if

                }
                else if(exceptDisplayObjects is int)
                {
                    // reveal display object if it's index(i) is the same as
                    // exceptDisplayObjects integar value

                    if (i == (exceptDisplayObjects as int))
                    {
                        displayObject.visible = true;

                    }// end if

                }
                else 
                {
                    if(exceptDisplayObjects is Vector.<String>)
                    {
                        for (var j:int = 0; j < (exceptDisplayObjects as Vector.<String>).length; j++)
                        {
                            // reveal display object if it's name is the same as
                            // exceptDisplayObjects[j] string value

                            if (displayObject.name == (exceptDisplayObjects[j] as String))
                            {
                                displayObject.visible = true;

                            }// end if

                        }// end for

                    }
                    else if(exceptDisplayObjects is Vector.<int>)
                    {
                        for (var k:int = 0; k < (exceptDisplayObjects as Vector.<int>).length; k++)
                        {
                            // reveal display object if it's index(i) is the same as
                            // exceptDisplayObjects[k] integar value

                            if (i == (exceptDisplayObjects[k] as int))
                            {
                                displayObject.visible = true;

                            }// end if

                        }// end for

                    }// end else if

                }// end 

            }// end for

        }// end function

    }// end class

}// end package

With the hideAllDOInDOC() method you can specify which display objects in the display object container that are not to hidden based on their name or index. You can also specify a group of display objects that are not to be hidden based on their name or index using Vector.<String> or Vector.<int>. Here are some example:

hideAllDOInDOC(displayObjectContainer, "displayObject8");

hideAllDOInDOC(displayObjectContainer, 7);

hideAllDOInDOC(displayObjectContainer, 
    Vector.<String>(["displayObject4", "displayObject6"]));

hideAllDOInDOC(displayObjectContainer, 
    Vector.<int>([4, 6]));
Taurayi
  • 3,209
  • 2
  • 17
  • 15