{ "type": "class",
  "qname": "mx.events.SliderEvent",
  "baseClassname": "org.apache.royale.events.Event"
  ,
    "description": "The SliderEvent class represents the event object passed to the event listener for the <code>change</code>, <code>thumbDrag</code>, <code>thumbPress</code>, and <code>thumbRelease</code> events of the HSlider and VSlider classes.",
  "tags": [
  {  "tagName": "see",
         "values": ["mx.controls.HSlider", "mx.controls.VSlider", "mx.controls.sliderClasses.Slider", "mx.events.SliderEventClickTarget"]},
      {  "tagName": "royalesuppresspublicvarwarning",
         "values": []},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Flex 3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "field",
        "qname": "CHANGE",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The <code>SliderEvent.CHANGE</code> constant defines the value of the <code>type</code> property of the event object for a <code>change</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>cancelable</code></td><td>false</td></tr> <tr><td><code>clickTarget</code></td><td>Specifies whether the slider track or a slider thumb was pressed.</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>keyCode</code></td><td>If the event was triggered by a key press, the keycode for the key.</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> <tr><td><code>thumbIndex</code></td><td>The zero-based index of the thumb whose position has changed.</td></tr> <tr><td><code>triggerEvent</code></td><td>Contains a value indicating the type of input action. The value is an event object of type flash.events.MouseEvent or flash.events.KeyboardEvent.</td></tr> <tr><td><code>value</code></td><td>The new value of the slider.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["change"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "THUMB_DRAG",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The <code>SliderEvent.THUMB_DRAG</code> constant defines the value of the <code>type</code> property of the event object for a <code>thumbDrag</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>cancelable</code></td><td>false</td></tr> <tr><td><code>clickTarget</code></td><td>Specifies whether the slider track or a slider thumb was pressed.</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>keyCode</code></td><td>If the event was triggered by a key press, the keycode for the key.</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> <tr><td><code>thumbIndex</code></td><td>The zero-based index of the thumb whose position has changed.</td></tr> <tr><td><code>triggerEvent</code></td><td>Contains a value indicating the type of input action. The value is an event object of type flash.events.MouseEvent or flash.events.KeyboardEvent.</td></tr> <tr><td><code>value</code></td><td>The new value of the slider.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["thumbDrag"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "THUMB_PRESS",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The <code>SliderEvent.THUMB_PRESS</code> constant defines the value of the <code>type</code> property of the event object for a <code>thumbPress</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>cancelable</code></td><td>false</td></tr> <tr><td><code>clickTarget</code></td><td>Specifies whether the slider track or a slider thumb was pressed.</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>keyCode</code></td><td>If the event was triggered by a key press, the keycode for the key.</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> <tr><td><code>thumbIndex</code></td><td>The zero-based index of the thumb whose position has changed.</td></tr> <tr><td><code>triggerEvent</code></td><td>Contains a value indicating the type of input action. The value is an event object of type flash.events.MouseEvent or flash.events.KeyboardEvent.</td></tr> <tr><td><code>value</code></td><td>The new value of the slider.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["thumbPress"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "THUMB_RELEASE",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "The <code>SliderEvent.THUMB_RELEASE</code> constant defines the value of the <code>type</code> property of the event object for a <code>thumbRelease</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>cancelable</code></td><td>false</td></tr> <tr><td><code>clickTarget</code></td><td>Specifies whether the slider track or a slider thumb was pressed.</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>keyCode</code></td><td>If the event was triggered by a key press, the keycode for the key.</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> <tr><td><code>thumbIndex</code></td><td>The zero-based index of the thumb whose position has changed.</td></tr> <tr><td><code>triggerEvent</code></td><td>Contains a value indicating the type of input action. The value is an event object of type flash.events.MouseEvent or flash.events.KeyboardEvent.</td></tr> <tr><td><code>value</code></td><td>The new value of the slider.</td></tr> </table>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "eventType",
               "values": ["thumbRelease"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "mx.events.SliderEvent",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.   up the display list hierarchy.  associated with the event can be prevented.  whose position has changed.   The value is an object of type flash.events.MouseEvent or flash.events.KeyboardEvent.   the keycode for the key.",
        "tags": [
        {  "tagName": "param",
               "values": ["type The event type; indicates the action that caused the event.", "bubbles Specifies whether the event can bubble", "cancelable Specifies whether the behavior", "thumbIndex The zero-based index of the thumb", "value The new value of the slider.", "triggerEvent The type of input action.", "clickTarget Whether the slider track or a slider thumb was pressed.", "keyCode If the event was triggered by a key press,"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": [{ "name": "type", "type": "String"},
        { "name": "bubbles", "type": "Boolean"},
        { "name": "cancelable", "type": "Boolean"},
        { "name": "thumbIndex", "type": "int"},
        { "name": "value", "type": "Number"},
        { "name": "triggerEvent", "type": "org.apache.royale.events.Event"},
        { "name": "clickTarget", "type": "String"},
        { "name": "keyCode", "type": "int"}]}
      ,
      { "type": "field",
        "qname": "clickTarget",
        "return": "String",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Specifies whether the slider track or a slider thumb was pressed. This property can have one of two values: <code>SliderEventClickTarget.THUMB</code> or <code>SliderEventClickTarget.TRACK</code>.",
        "tags": [
        {  "tagName": "see",
               "values": ["mx.events.SliderEventClickTarget"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "keyCode",
        "return": "int",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "If the event was triggered by a key press, the keycode for the key.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "thumbIndex",
        "return": "int",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The zero-based index of the thumb whose position has changed. If there is only a single thumb, the value is 0. If there are two thumbs, the value is 0 or 1.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "triggerEvent",
        "return": "org.apache.royale.events.Event",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Indicates the type of input action. The value is an event object of type flash.events.MouseEvent or flash.events.KeyboardEvent.",
        "tags": [
        {  "tagName": "see",
               "values": ["flash.events.MouseEvent", "flash.events.KeyboardEvent"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "field",
        "qname": "value",
        "return": "Number",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The new value of the slider.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
