{ "type": "class",
  "qname": "mx.events.ModuleEvent",
  "baseClassname": "mx.events.ProgressEvent"
  ,
    "description": "The ModuleEvent class represents the event object passed to the event listener for events related to dynamically-loaded modules.",
  "tags": [
  {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.9.3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "field",
        "qname": "ERROR",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Dispatched when there is an error downloading the module. The <code>ModuleEvent.ERROR</code> constant defines the value of the <code>type</code> property of the event object for an <code>error</code> event.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td>false</td></tr> <tr><td><code>bytesLoaded</code></td><td>Empty</td></tr> <tr><td><code>bytesTotal</code></td><td>Empty</td></tr> <tr><td><code>cancelable</code></td><td>false</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>errorText</code></td><td>The error message.</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["error"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "READY",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Dispatched when the module has finished downloading. The <code>ModuleEvent.READY</code> constant defines the value of the <code>type</code> property of the event object for a <code>complete</code> event.  <p>The properties of the event object have the following values:</p> <table class=&quot;innertable&quot;> <tr><th>Property</th><th>Value</th></tr> <tr><td><code>bubbles</code></td><td>false</td></tr> <tr><td><code>bytesLoaded</code></td><td>The number of bytes loaded.</td></tr> <tr><td><code>bytesTotal</code></td><td>The total number of bytes to load.</td></tr> <tr><td><code>cancelable</code></td><td>false</td></tr> <tr><td><code>currentTarget</code></td><td>The Object that defines the event listener that handles the event. For example, if you use <code>myButton.addEventListener()</code> to register an event listener, myButton is the value of the <code>currentTarget</code>. </td></tr> <tr><td><code>errorText</code></td><td>Empty</td></tr> <tr><td><code>target</code></td><td>The Object that dispatched the event; it is not always the Object listening for the event. Use the <code>currentTarget</code> property to always access the Object listening for the event.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["ready"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "mx.events.ModuleEvent",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.  <ul> <li>&quot;progress&quot; (<code>ModuleEvent.PROGRESS</code>);</li> <li>&quot;ready&quot; (<code>ModuleEvent.READY</code>);</li> <li>&quot;setup&quot; (<code>ModuleEvent.SETUP</code>);</li> <li>&quot;error&quot; (<code>ModuleEvent.ERROR</code>);</li> <li>&quot;unload&quot; (<code>ModuleEvent.UNLOAD</code>);</li> </ul>  participates in the bubbling stage of the event flow.  during event propagation.  at the time the listener processes the event.  that will be loaded if the loading process succeeds.  is <code>ModuleEvent.ERROR</code>.",
        "tags": [
        {  "tagName": "param",
               "values": ["type The type of event. Possible values are:", "bubbles Determines whether the Event object", "cancelable Determines whether the Event object can be cancelled", "bytesLoaded The number of bytes loaded", "bytesTotal The total number of bytes", "errorText The error message when the event type", "module An instance of an interface for a particular module. ."]},
            {  "tagName": "tiptext",
               "values": ["Constructor for <code>ModuleEvent</code> objects."]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": [{ "name": "type", "type": "String"},
        { "name": "bubbles", "type": "Boolean"},
        { "name": "cancelable", "type": "Boolean"},
        { "name": "bytesLoaded", "type": "uint"},
        { "name": "bytesTotal", "type": "uint"},
        { "name": "errorText", "type": "String"},
        { "name": "module", "type": "mx.modules.IModuleInfo"}]}
      ,
      { "type": "field",
        "qname": "errorText",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The error message if the type is <code>ModuleEvent.ERROR</code>; otherwise, it is <code>null</code>.",
        "tags": [
        {  "tagName": "royalesuppresspublicvarwarning",
               "values": []},
            {  "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": "mx.modules.IModuleInfo",
        "qname": "module",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The <code>target</code>, which is an instance of an interface for a particular module.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.9.3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
