{ "type": "class",
  "qname": "mx.core.Container",
  "baseClassname": "mx.core.UIComponent"
  ,
    "description": "The Container class is an abstract base class for components that controls the layout characteristics of child components. You do not create an instance of Container in an application. Instead, you create an instance of one of Container's subclasses, such as Canvas or HBox.  <p>The Container class contains the logic for scrolling, clipping, and dynamic instantiation. It contains methods for adding and removing children. It also contains the <code>getChildAt()</code> method, and the logic for drawing the background and borders of containers.</p>   Flex Framework containers inherit the following attributes from the Container class:</p>  <pre>\\n &lt;mx:<i>tagname</i>\\n <strong>Properties</strong>\\n autoLayout=&quot;true|false&quot;\\n clipContent=&quot;true|false&quot;\\n creationIndex=&quot;undefined&quot;\\n creationPolicy=&quot;auto|all|queued|none&quot;\\n defaultButton=&quot;<i>No default</i>&quot;\\n horizontalLineScrollSize=&quot;5&quot;\\n horizontalPageScrollSize=&quot;0&quot;\\n horizontalScrollBar=&quot;null&quot;\\n horizontalScrollPolicy=&quot;auto|on|off&quot;\\n horizontalScrollPosition=&quot;0&quot;\\n icon=&quot;undefined&quot;\\n label=&quot;&quot;\\n verticalLineScrollSize=&quot;5&quot;\\n verticalPageScrollSize=&quot;0&quot;\\n verticalScrollBar=&quot;null&quot;\\n verticalScrollPolicy=&quot;auto|on|off&quot;\\n verticalScrollPosition=&quot;0&quot;\\n \\n <strong>Styles</strong>\\n backgroundAlpha=&quot;1.0&quot;\\n backgroundAttachment=&quot;scroll&quot;\\n backgroundColor=&quot;undefined&quot;\\n backgroundDisabledColor=&quot;undefined&quot;\\n backgroundImage=&quot;undefined&quot;\\n backgroundSize=&quot;auto&quot;\\n <i>    For the Application container only,</i> backgroundSize=&quot;100%&quot;\\n barColor=&quot;undefined&quot;\\n borderColor=&quot;0xAAB3B3&quot;\\n borderSides=&quot;left top right bottom&quot;\\n borderSkin=&quot;mx.skins.halo.HaloBorder&quot;\\n borderStyle=&quot;inset&quot;\\n borderThickness=&quot;1&quot;\\n color=&quot;0x0B333C&quot;\\n cornerRadius=&quot;0&quot;\\n disabledColor=&quot;0xAAB3B3&quot;\\n disbledOverlayAlpha=&quot;undefined&quot;\\n dropShadowColor=&quot;0x000000&quot;\\n dropShadowEnabled=&quot;false&quot;\\n fontAntiAliasType=&quot;advanced&quot;\\n fontfamily=&quot;Verdana&quot;\\n fontGridFitType=&quot;pixel&quot;\\n fontSharpness=&quot;0&quot;&quot;\\n fontSize=&quot;10&quot;\\n fontStyle=&quot;normal&quot;\\n fontThickness=&quot;0&quot;\\n fontWeight=&quot;normal&quot;\\n horizontalScrollBarStyleName=&quot;undefined&quot;\\n paddingBottom=&quot;0&quot;\\n paddingLeft=&quot;0&quot;\\n paddingRight=&quot;0&quot;\\n paddingTop=&quot;0&quot;\\n shadowDirection=&quot;center&quot;\\n shadowDistance=&quot;2&quot;\\n textAlign=&quot;left&quot;\\n textDecoration=&quot;none|underline&quot;\\n textIndent=&quot;0&quot;\\n verticalScrollBarStyleName=&quot;undefined&quot;\\n \\n <strong>Events</strong>\\n childAdd=&quot;<i>No default</i>&quot;\\n childIndexChange=&quot;<i>No default</i>&quot;\\n childRemove=&quot;<i>No default</i>&quot;\\n dataChange=&quot;<i>No default</i>&quot;\\n scroll=&quot;<i>No default</i>&quot;\\n &gt;\\n ...\\n <i>child tags</i>\\n ...\\n &lt;/mx:<i>tagname</i>&gt;\\n </pre>",
  "tags": [
  {  "tagName": "mxml",
         "values": []},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "mx.core.Container",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "mx.core.IFlexDisplayObject",
        "qname": "defaultButton",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The Button control designated as the default button for the container. When controls in the container have focus, pressing the Enter key is the same as clicking this Button control.",
        "tags": [
        {  "tagName": "default",
               "values": ["null"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "textDecoration",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "horizontalScrollPolicy",
        "namespace": "public",
        "bindable": ["horizontalScrollPolicyChanged"],
        "details": [],
        "deprecated": {},
          "description": "A property that indicates whether the horizontal scroll bar is always on, always off, or automatically changes based on the parameters passed to the <code>setScrollBarProperties()</code> method. Allowed values are <code>ScrollPolicy.ON</code>, <code>ScrollPolicy.OFF</code>, and <code>ScrollPolicy.AUTO</code>. MXML values can be <code>&quot;on&quot;</code>, <code>&quot;off&quot;</code>, and <code>&quot;auto&quot;</code>.  <p>Setting this property to <code>ScrollPolicy.OFF</code> for ListBase subclasses does not affect the <code>horizontalScrollPosition</code> property; you can still scroll the contents programmatically.</p>  <p>Note that the policy can affect the measured size of the component If the policy is <code>ScrollPolicy.AUTO</code> the scrollbar is not factored in the measured size.  This is done to keep the layout from recalculating when the scrollbar appears.  If you know that you will have enough data for scrollbars you should set the policy to <code>ScrollPolicy.ON</code>.  If you don't know, you may need to set an explicit width or height on the component to allow for scrollbars to appear later.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["ScrollPolicy.OFF"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "verticalScrollPolicy",
        "namespace": "public",
        "bindable": ["verticalScrollPolicyChanged"],
        "details": [],
        "deprecated": {},
          "description": "A property that indicates whether the vertical scroll bar is always on, always off, or automatically changes based on the parameters passed to the <code>setScrollBarProperties()</code> method. Allowed values are <code>ScrollPolicy.ON</code>, <code>ScrollPolicy.OFF</code>, and <code>ScrollPolicy.AUTO</code>. MXML values can be <code>&quot;on&quot;</code>, <code>&quot;off&quot;</code>, and <code>&quot;auto&quot;</code>.  <p>Setting this property to <code>ScrollPolicy.OFF</code> for ListBase subclasses does not affect the <code>verticalScrollPosition</code> property; you can still scroll the contents programmatically.</p>  <p>Note that the policy can affect the measured size of the component If the policy is <code>ScrollPolicy.AUTO</code> the scrollbar is not factored in the measured size.  This is done to keep the layout from recalculating when the scrollbar appears.  If you know that you will have enough data for scrollbars you should set the policy to <code>ScrollPolicy.ON</code>.  If you don't know, you may need to set an explicit width or height on the component to allow for scrollbars to appear later.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["ScrollPolicy.AUTO"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "layoutChrome",
        "namespace": "protected",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Respond to size changes by setting the positions and sizes of this container's borders. This is an advanced method that you might override when creating a subclass of Container.  <p>Flex calls the <code>layoutChrome()</code> method when the container is added to a parent container using the <code>addChild()</code> method, and when the container's <code>invalidateDisplayList()</code> method is called.</p>  <p>The <code>Container.layoutChrome()</code> method is called regardless of the value of the <code>autoLayout</code> property.</p>  <p>The <code>Container.layoutChrome()</code> method sets the position and size of the Container container's border. In every subclass of Container, the subclass's <code>layoutChrome()</code> method should call the <code>super.layoutChrome()</code> method, so that the border is positioned properly.</p>  in the component's coordinates, regardless of the value of the <code>scaleX</code> property of the component.  in the component's coordinates, regardless of the value of the <code>scaleY</code> property of the component.",
        "tags": [
        {  "tagName": "param",
               "values": ["unscaledWidth Specifies the width of the component, in pixels,", "unscaledHeight Specifies the height of the component, in pixels,"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "unscaledWidth", "type": "Number"},
        { "name": "unscaledHeight", "type": "Number"}]}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "borderVisible",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Number of pixels between the container's bottom border and the bottom of its content area.",
        "tags": [
        {  "tagName": "default",
               "values": ["0"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "verticalGap",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Number of pixels between children in the vertical direction. The default value depends on the component class; if not overridden for the class, the default value is 6.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "horizontalAlign",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "horizontalAlign (was a style in Flex)",
        "tags": [
        {  "tagName": "inheritDoc",
               "values": []},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "horizontalGap",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "verticalAlign",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "borderStyle",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "accessor",
        "access": "read-write",
        "return": "Class",
        "qname": "icon",
        "namespace": "public",
        "bindable": ["iconChanged"],
        "details": [],
        "deprecated": {},
          "description": "The Class of the icon displayed by some navigator containers to represent this Container.  <p>For example, if this Container is a child of a TabNavigator, this icon appears in the corresponding tab. If this Container is a child of an Accordion, this icon appears in the corresponding header.</p>  <p>To embed the icon in the SWF file, use the &#64;Embed() MXML compiler directive:</p>  <pre>\\n icon=&quot;&#64;Embed('filepath')&quot;\\n </pre>  <p>The image can be a JPEG, GIF, PNG, SVG, or SWF file.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["null"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "label",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {}},
      { "type": "method",
        "qname": "addedToParent",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "createChildren",
        "namespace": "protected",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "removeAllChildren",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Removes all children from the child list of this container.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "layoutNeeded",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Dispatches a &quot;layoutNeeded&quot; event",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.8"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "Object",
        "qname": "data",
        "namespace": "public",
        "bindable": ["dataChange"],
        "details": [],
        "deprecated": {},
          "description": "The <code>data</code> property lets you pass a value to the component when you use it as an item renderer or item editor. You typically use data binding to bind a field of the <code>data</code> property to a property of this component.  <p>When you use the control as a drop-in item renderer or drop-in item editor, Flex automatically writes the current value of the item to the <code>selected</code> property of this control.</p>  <p>You do not set this property in MXML.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["null"]},
            {  "tagName": "see",
               "values": ["mx.core.IDataRenderer"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "getLayoutHost",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns the ILayoutHost which is its view. From ILayoutParent.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.8"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.core.ILayoutHost",
          "params": []}
      ,
      { "type": "method",
        "qname": "getLayoutChildAt",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "return": "mx.core.IUIComponent",
          "params": [{ "name": "index", "type": "int"}]}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "mx.core.EdgeMetrics",
        "qname": "viewMetricsAndPadding",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns an object that has four properties: <code>left</code>, <code>top</code>, <code>right</code>, and <code>bottom</code>. The value of each property is equal to the thickness of the chrome (visual elements) around the edge of the container plus the thickness of the object's margins.  <p>The chrome includes the border thickness. If the <code>horizontalScrollPolicy</code> or <code>verticalScrollPolicy</code> property value is <code>ScrollPolicy.ON</code>, the chrome also includes the thickness of the corresponding scroll bar. If a scroll policy is <code>ScrollPolicy.AUTO</code>, the chrome measurement does not include the scroll bar thickness, even if a scroll bar is displayed.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "org.apache.royale.core.IParent",
        "qname": "strandChildren",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "numElements",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "method",
        "qname": "getChildAt",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "mx.core.IUIComponent",
          "params": [{ "name": "index", "type": "int"}]}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "$numElements",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Support strandChildren.",
        "tags": [
        {  "tagName": "private",
               "values": []},
            {  "tagName": "suppress",
               "values": ["{undefinedNames}"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Array",
        "qname": "childDescriptors",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Array of UIComponentDescriptor objects produced by the MXML compiler.  <p>Each UIComponentDescriptor object contains the information specified in one child MXML tag of the container's MXML tag. The order of the UIComponentDescriptor objects in the Array is the same as the order of the child tags. During initialization, the child descriptors are used to create the container's child UIComponent objects and its Repeater objects, and to give them the initial property values, event handlers, effects, and so on, that were specified in MXML.</p>",
        "tags": [
        {  "tagName": "see",
               "values": ["mx.core.UIComponentDescriptor"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "creationPolicy",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The child creation policy for this MX Container. ActionScript values can be <code>ContainerCreationPolicy.AUTO</code>, <code>ContainerCreationPolicy.ALL</code>, or <code>ContainerCreationPolicy.NONE</code>. MXML values can be <code>auto</code>, <code>all</code>, or <code>none</code>.  <p>If no <code>creationPolicy</code> is specified for a container, that container inherits its parent's <code>creationPolicy</code>. If no <code>creationPolicy</code> is specified for the Application, it defaults to <code>ContainerCreationPolicy.AUTO</code>.</p>  <p>A <code>creationPolicy</code> of <code>ContainerCreationPolicy.AUTO</code> means that the container delays creating some or all descendants until they are needed, a process which is known as <i>deferred instantiation</i>. This policy produces the best startup time because fewer UIComponents are created initially. However, this introduces navigation delays when a user navigates to other parts of the application for the first time. Navigator containers such as Accordion, TabNavigator, and ViewStack implement the <code>ContainerCreationPolicy.AUTO</code> policy by creating all their children immediately, but wait to create the deeper descendants of a child until it becomes the selected child of the navigator container.</p>  <p>A <code>creationPolicy</code> of <code>ContainerCreationPolicy.ALL</code> means that the navigator containers immediately create deeper descendants for each child, rather than waiting until that child is selected. For single-view containers such as a VBox container, there is no difference  between the <code>ContainerCreationPolicy.AUTO</code> and <code>ContainerCreationPolicy.ALL</code> policies.</p>  <p>A <code>creationPolicy</code> of <code>ContainerCreationPolicy.NONE</code> means that the container creates none of its children. In that case, it is the responsibility of the MXML author to create the children by calling the <code>createComponentsFromDescriptors()</code> method.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["ContainerCreationPolicy.AUTO"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "getChildren",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns an Array of DisplayObject objects consisting of the content children of the container. This array does <b>not</b> include the DisplayObjects that implement the container's display elements, such as its border and the background image.  of the container.",
        "tags": [
        {  "tagName": "see",
               "values": ["#rawChildren"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "return",
               "values": ["Array of DisplayObject objects consisting of the content children"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Array",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "Number",
        "qname": "contentMouseX",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "copy",
               "values": ["mx.core.UIComponent#contentMouseX"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Number",
        "qname": "contentMouseY",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "copy",
               "values": ["mx.core.UIComponent#contentMouseY"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  ,
  "events": [
  { "qname": "childIndexChange",
        "type": "mx.events.IndexChangedEvent"
      ,
          "description": "Dispatched after the index (among the container children) of a container child changes. This event is only dispatched for the child specified as the argument to the <code>setChildIndex()</code> method; it is not dispatched for any other child whose index changes as a side effect of the call to the <code>setChildIndex()</code> method.  <p>The child's index is changed when the <code>setChildIndex()</code> method is called.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["mx.events.IndexChangedEvent.CHILD_INDEX_CHANGE"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "dataChange",
        "type": "mx.events.FlexEvent"
      ,
          "description": "Dispatched when the <code>data</code> property changes.  <p>When a container is used as a renderer in a List or other components, the <code>data</code> property is used pass to the container the data to display.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["mx.events.FlexEvent.DATA_CHANGE"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "scroll",
        "type": "mx.events.ScrollEvent"
      ,
          "description": "Dispatched when the user manually scrolls the container.  <p>The event is dispatched when the scroll position is changed using either the mouse (e.g. clicking on the scrollbar's &quot;down&quot; button) or the keyboard (e.g., clicking on the down-arrow key). However, this event is not dispatched if the scroll position is changed programatically (e.g., setting the value of the <code>horizontalScrollPosition</code> property). The <code>viewChanged</code> event is delivered whenever the scroll position is changed, either manually or programatically.</p>  <p>At the time when this event is dispatched, the scrollbar has been updated to the new position, but the container's child objects have not been shifted to reflect the new scroll position.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["mx.events.ScrollEvent.SCROLL"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
