<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="../../style.css" type="text/css" media="screen"><link rel="stylesheet" href="../../print.css" type="text/css" media="print"><link rel="stylesheet" href="../../override.css" type="text/css"><meta name="keywords" content="ProgrammaticSkin,mx.skins.ProgrammaticSkin,backgroundImageBounds,borderMetrics,hasBackgroundImage,initialized,measuredHeight,measuredWidth,nestLevel,processedDescriptors,styleName,updateCompletePendingFlag,drawRoundRect,getStyle,horizontalGradientMatrix,invalidateDisplayList,invalidateProperties,invalidateSize,layoutBackgroundImage,move,rotatedGradientMatrix,setActualSize,styleChanged,updateDisplayList,validateDisplayList,validateNow,validateProperties,validateSize,verticalGradientMatrix"><title>mx.skins.ProgrammaticSkin</title></head><body><script language="javascript" type="text/javascript" src="../../asdoc.js"></script><script language="javascript" type="text/javascript" src="../../help.js"></script><script language="javascript" type="text/javascript" src="../../cookies.js"></script><script language="javascript" type="text/javascript"><!--
				asdocTitle = 'ProgrammaticSkin - ApacheFlex API Reference';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<script type="text/javascript">
			scrollToNameAnchor();
		</script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">Apache Flex 4.16.1 API Reference </td><td class="titleTableTopNav" align="right"><a href="../../package-summary.html" onclick="loadClassListFrame('../../all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="../../class-summary.html" onclick="loadClassListFrame('../../all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a href="../../all-index-A.html" onclick="loadClassListFrame('../../index-list.html')">Index</a>&nbsp;|&nbsp;<a id="framesLink1" href="../../index.html?mx/skins/ProgrammaticSkin.html&amp;mx/skins/class-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="../../images/logo.jpg" class="logoImage" alt="AdobeLogo" title="AdobeLogo"></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">ProgrammaticSkin</td><td class="titleTableSubNav" id="subNav" align="right"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
				<!--
				
					if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("ProgrammaticSkin"); titleBar_setSubNav(false,true,false,false,false,false,false,false,true,false,false	,false,false,false,false,false);}	
				-->
			</script><div xmlns:fn="http://www.w3.org/2005/xpath-functions" class="MainContent"><table class="classHeaderTable" cellpadding="0" cellspacing="0"><tr><td class="classHeaderTableLabel">Package</td><td><a href="package-detail.html" onclick="javascript:loadClassListFrame('class-list.html')">mx.skins</a></td></tr><tr><td class="classHeaderTableLabel">Class</td><td class="classSignature">public  class  ProgrammaticSkin</td></tr><tr><td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">ProgrammaticSkin  <img src="../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> <a href="../../mx/core/FlexShape.html">FlexShape</a> <img src="../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> flash.display.Shape</td></tr><tr><td class="classHeaderTableLabel">Implements</td><td> <a href="../../mx/core/IFlexDisplayObject.html">IFlexDisplayObject</a>,  <a href="../../mx/core/IInvalidating.html">IInvalidating</a>,  <a href="../../mx/managers/ILayoutManagerClient.html">ILayoutManagerClient</a>,  <a href="../../mx/styles/ISimpleStyleClient.html">ISimpleStyleClient</a>,  <a href="../../mx/core/IProgrammaticSkin.html">IProgrammaticSkin</a></td></tr><tr><td class="classHeaderTableLabel">Subclasses</td><td> <a href="../../mx/skins/halo/AdvancedDataGridHeaderHorizontalSeparator.html">AdvancedDataGridHeaderHorizontalSeparator</a>,  <a href="../../mx/skins/halo/ApplicationBackground.html">ApplicationBackground</a>,  <a href="../../mx/skins/halo/ApplicationTitleBarBackgroundSkin.html">ApplicationTitleBarBackgroundSkin</a>,  <a href="../../mx/charts/renderers/AreaRenderer.html">AreaRenderer</a>,  <a href="../../mx/skins/Border.html">Border</a>,  <a href="../../mx/charts/renderers/BoxItemRenderer.html">BoxItemRenderer</a>,  <a href="../../mx/skins/halo/BrokenImageBorderSkin.html">BrokenImageBorderSkin</a>,  <a href="../../mx/charts/renderers/CandlestickItemRenderer.html">CandlestickItemRenderer</a>,  <a href="../../mx/charts/renderers/CircleItemRenderer.html">CircleItemRenderer</a>,  <a href="../../mx/charts/renderers/CrossItemRenderer.html">CrossItemRenderer</a>,  <a href="../../mx/skins/halo/DataGridColumnDropIndicator.html">DataGridColumnDropIndicator</a>,  <a href="../../mx/skins/halo/DataGridColumnResizeSkin.html">DataGridColumnResizeSkin</a>,  <a href="../../mx/skins/halo/DataGridHeaderBackgroundSkin.html">DataGridHeaderBackgroundSkin</a>,  <a href="../../mx/skins/halo/DataGridHeaderSeparator.html">DataGridHeaderSeparator</a>,  <a href="../../mx/skins/halo/DataGridSortArrow.html">DataGridSortArrow</a>,  <a href="../../mx/skins/spark/DataGridSortArrow.html">DataGridSortArrow</a>,  <a href="../../mx/skins/halo/DateChooserIndicator.html">DateChooserIndicator</a>,  <a href="../../mx/charts/renderers/DiamondItemRenderer.html">DiamondItemRenderer</a>,  <a href="../../mx/skins/halo/HaloFocusRect.html">HaloFocusRect</a>,  <a href="../../mx/charts/renderers/HLOCItemRenderer.html">HLOCItemRenderer</a>,  <a href="../../mx/charts/renderers/LineRenderer.html">LineRenderer</a>,  <a href="../../mx/skins/halo/LinkSeparator.html">LinkSeparator</a>,  <a href="../../mx/skins/halo/ListDropIndicator.html">ListDropIndicator</a>,  <a href="../../spark/skins/spark/ListDropIndicator.html">ListDropIndicator</a>,  <a href="../../mx/skins/halo/PopUpIcon.html">PopUpIcon</a>,  <a href="../../mx/skins/halo/ProgressMaskSkin.html">ProgressMaskSkin</a>,  <a href="../../mx/skins/spark/ProgressMaskSkin.html">ProgressMaskSkin</a>,  <a href="../../mx/charts/renderers/ShadowBoxItemRenderer.html">ShadowBoxItemRenderer</a>,  <a href="../../mx/charts/renderers/ShadowLineRenderer.html">ShadowLineRenderer</a>,  <a href="../../mx/skins/halo/StatusBarBackgroundSkin.html">StatusBarBackgroundSkin</a>,  <a href="../../mx/skins/halo/TitleBackground.html">TitleBackground</a>,  <a href="../../mx/charts/renderers/TriangleItemRenderer.html">TriangleItemRenderer</a>,  <a href="../../mx/charts/renderers/WedgeItemRenderer.html">WedgeItemRenderer</a>,  <a href="../../mx/skins/halo/WindowBackground.html">WindowBackground</a></td></tr></table><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p></p><p></p>
  This class is the base class for skin elements
  which draw themselves programmatically.
  
  <p></p><br/><hr></div><a name="propertySummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Properties</div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableProperty"><tr><th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#initialized" class="signatureLink">initialized</a> : Boolean<div class="summaryTableDescription">
      A flag that determines if an object has been through all three phases
      of layout: commitment, measurement, and layout (provided that any were required).</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredHeight" class="signatureLink">measuredHeight</a> : Number<div class="summaryTableDescription">[read-only] 
	  The measured height of this object.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredWidth" class="signatureLink">measuredWidth</a> : Number<div class="summaryTableDescription">[read-only] 
	  The measured width of this object.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#nestLevel" class="signatureLink">nestLevel</a> : int<div class="summaryTableDescription">
      Depth of this object in the containment hierarchy.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#processedDescriptors" class="signatureLink">processedDescriptors</a> : Boolean<div class="summaryTableDescription">
      Set to true after immediate or deferred child creation,
      depending on which one happens.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#styleName" class="signatureLink">styleName</a> : Object<div class="summaryTableDescription">
      A parent component used to obtain style values.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#updateCompletePendingFlag" class="signatureLink">updateCompletePendingFlag</a> : Boolean<div class="summaryTableDescription">
	  A flag that determines if an object has been through all three phases
	  of layout validation (provided that any were required).</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr></table></div><a name="methodSummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Methods </div><div class="showHideLinks"><div id="hideInheritedMethod" class="hideInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(false,'Method');"><img class="showHideLinkImage" src="../../images/expanded.gif"> Hide Inherited Public Methods</a></div><div id="showInheritedMethod" class="showInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(true,'Method');"><img class="showHideLinkImage" src="../../images/collapsed.gif"> Show Inherited Public Methods</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableMethod"><tr><th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#ProgrammaticSkin()" class="signatureLink">ProgrammaticSkin</a>()</div><div class="summaryTableDescription">
	  Constructor.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getStyle()" class="signatureLink">getStyle</a>(styleProp:String):*</div><div class="summaryTableDescription">
      Returns the value of the specified style property.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateDisplayList()" class="signatureLink">invalidateDisplayList</a>():void</div><div class="summaryTableDescription">
      Marks a component so that its updateDisplayList()
      method gets called during a later screen update.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateProperties()" class="signatureLink">invalidateProperties</a>():void</div><div class="summaryTableDescription">
	  
	  Calling this method results in a call to the component's
	  validateProperties() method
	  before the display list is rendered.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateSize()" class="signatureLink">invalidateSize</a>():void</div><div class="summaryTableDescription">
	  
	  Calling this method results in a call to the component's
	  validateSize() method
	  before the display list is rendered.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#move()" class="signatureLink">move</a>(x:Number, y:Number):void</div><div class="summaryTableDescription">
	  Moves this object to the specified x and y coordinates.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setActualSize()" class="signatureLink">setActualSize</a>(newWidth:Number, newHeight:Number):void</div><div class="summaryTableDescription">
	  Sets the height and width of this object.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#styleChanged()" class="signatureLink">styleChanged</a>(styleProp:String):void</div><div class="summaryTableDescription">
	  Whenever any style changes, redraw this skin.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FlexShape.html#toString()" class="signatureLink">toString</a>():String</div><div class="summaryTableDescription">[override] 
	  Returns a string indicating the location of this object
	  within the hierarchy of DisplayObjects in the Application.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FlexShape.html">FlexShape</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#validateDisplayList()" class="signatureLink">validateDisplayList</a>():void</div><div class="summaryTableDescription">
	  This function is called by the LayoutManager
	  when it's time for this control to draw itself.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#validateNow()" class="signatureLink">validateNow</a>():void</div><div class="summaryTableDescription">
	  Validate and update the properties and layout of this object
	  and redraw it, if necessary.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#validateProperties()" class="signatureLink">validateProperties</a>():void</div><div class="summaryTableDescription">
	  This function is an empty stub so that ProgrammaticSkin
	  can implement the ILayoutManagerClient  interface.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#validateSize()" class="signatureLink">validateSize</a>(recursive:Boolean = false):void</div><div class="summaryTableDescription">
	  This function is an empty stub so that ProgrammaticSkin
	  can implement the ILayoutManagerClient  interface.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr></table></div><a name="protectedMethodSummary"></a><div class="summarySection"><div class="summaryTableTitle">Protected Methods </div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableProtectedMethod"><tr><th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#drawRoundRect()" class="signatureLink">drawRoundRect</a>(x:Number, y:Number, width:Number, height:Number, cornerRadius:Object = null, color:Object = null, alpha:Object = null, gradientMatrix:Matrix = null, gradientType:String = linear, gradientRatios:Array = null, hole:Object = null):void</div><div class="summaryTableDescription">
	  Programatically draws a rectangle into this skin's Graphics object.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#horizontalGradientMatrix()" class="signatureLink">horizontalGradientMatrix</a>(x:Number, y:Number, width:Number, height:Number):Matrix</div><div class="summaryTableDescription">
	  Utility function to create a horizontal gradient matrix.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#rotatedGradientMatrix()" class="signatureLink">rotatedGradientMatrix</a>(x:Number, y:Number, width:Number, height:Number, rotation:Number):Matrix</div><div class="summaryTableDescription">
	  Utility function to create a rotated gradient matrix.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#updateDisplayList()" class="signatureLink">updateDisplayList</a>(unscaledWidth:Number, unscaledHeight:Number):void</div><div class="summaryTableDescription">
	  Programmatically draws the graphics for this skin.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#verticalGradientMatrix()" class="signatureLink">verticalGradientMatrix</a>(x:Number, y:Number, width:Number, height:Number):Matrix</div><div class="summaryTableDescription">
	  Utility function to create a vertical gradient matrix.</div></td><td class="summaryTableOwnerCol">ProgrammaticSkin</td></tr></table></div><script language="javascript" type="text/javascript"><!--
										showHideInherited();
										--></script><div class="MainContent"><div class="detailSectionHeader">Property Detail</div><a name="propertyDetail"></a><a name="initialized"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">initialized</td><td class="detailHeaderType">property</td></tr></table><div class="detailBody"><code>initialized:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      A flag that determines if an object has been through all three phases
      of layout: commitment, measurement, and layout (provided that any were required).
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get initialized():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set initialized(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="measuredHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  The measured height of this object.
	  This should be overridden by subclasses to return the preferred height for
	  the skin.
	 	  </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="measuredWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  The measured width of this object.
	  This should be overridden by subclasses to return the preferred width for
	  the skin.
	 	  </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredWidth():Number</code><br/></div><a name="propertyDetail"></a><a name="nestLevel"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">nestLevel</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>nestLevel:int</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      Depth of this object in the containment hierarchy.
      This number is used by the measurement and layout code.
      The value is 0 if this component is not on the DisplayList.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get nestLevel():int</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set nestLevel(value:int):void</code><br/></div><a name="propertyDetail"></a><a name="processedDescriptors"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">processedDescriptors</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>processedDescriptors:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      Set to <code>true</code> after immediate or deferred child creation,
      depending on which one happens. For a Container object, it is set
      to <code>true</code> at the end of
      the <code>createComponentsFromDescriptors()</code> method,
      meaning after the Container object creates its children from its child descriptors.
           <p>For example, if an Accordion container uses deferred instantiation,
      the <code>processedDescriptors</code> property for the second pane of
      the Accordion container does not become <code>true</code> until after
      the user navigates to that pane and the pane creates its children.
      But, if the Accordion had set the <code>creationPolicy</code> property
      to <code>"all"</code>, the <code>processedDescriptors</code> property
      for its second pane is set to <code>true</code> during application startup.</p>
           <p>For classes that are not containers, which do not have descriptors,
      it is set to <code>true</code> after the <code>createChildren()</code>
      method creates any internal component children.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get processedDescriptors():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set processedDescriptors(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="styleName"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">styleName</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>styleName:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      A parent component used to obtain style values. This is typically set to the
      component that created this skin.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get styleName():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set styleName(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="updateCompletePendingFlag"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">updateCompletePendingFlag</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>updateCompletePendingFlag:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  A flag that determines if an object has been through all three phases
	  of layout validation (provided that any were required).
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get updateCompletePendingFlag():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set updateCompletePendingFlag(value:Boolean):void</code><br/></div><a name="constructorDetail"></a><div class="detailSectionHeader">Constructor Detail</div><a name="ProgrammaticSkin()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">ProgrammaticSkin</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">Constructor</td></tr></table><div class="detailBody"><code>public function ProgrammaticSkin()</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p>
	  Constructor.
	  
	  </p></div><a name="methodDetail"></a><div class="detailSectionHeader">Method Detail</div><a name="drawRoundRect()"></a><a name="drawRoundRect(Number,Number,Number,Number,Object,Object,Object,flash.geom.Matrix,String,Array,Object)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">drawRoundRect</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td></tr></table><div class="detailBody"><code> protected function drawRoundRect(x:Number, y:Number, width:Number, height:Number, cornerRadius:Object = null, color:Object = null, alpha:Object = null, gradientMatrix:Matrix = null, gradientType:String = linear, gradientRatios:Array = null, hole:Object = null):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Programatically draws a rectangle into this skin's Graphics object.
	 	  <p>The rectangle can have rounded corners.
	  Its edges are stroked with the current line style
	  of the Graphics object.
	  It can have a solid color fill, a gradient fill, or no fill.
	  A solid fill can have an alpha transparency.
	  A gradient fill can be linear or radial. You can specify
	  up to 15 colors and alpha values at specified points along
	  the gradient, and you can specify a rotation angle
	  or transformation matrix for the gradient.
	  Finally, the rectangle can have a rounded rectangular hole
	  carved out of it.</p>
	 	  <p>This versatile rectangle-drawing routine is used by many skins.
	  It calls the <code>drawRect()</code> or
	  <code>drawRoundRect()</code>
	  methods (in the flash.display.Graphics class) to draw into this
	  skin's Graphics object.</p>
	 	 </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; Horizontal position of upper-left corner
	  of rectangle within this skin.
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; Vertical position of upper-left corner
	  of rectangle within this skin.
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">width</span>:Number</code> &mdash; Width of rectangle, in pixels.
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">height</span>:Number</code> &mdash; Height of rectangle, in pixels.
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">cornerRadius</span>:Object</code> (default = <code>null</code>)<code></code> &mdash; Corner radius/radii of rectangle.
	  Can be <code>null</code>, a Number, or an Object.
	  If it is <code>null</code>, it specifies that the corners should be square
	  rather than rounded.
	  If it is a Number, it specifies the same radius, in pixels,
	  for all four corners.
	  If it is an Object, it should have properties named
	  <code>tl</code>, <code>tr</code>, <code>bl</code>, and
	  <code>br</code>, whose values are Numbers specifying
	  the radius, in pixels, for the top left, top right,
	  bottom left, and bottom right corners.
	  For example, you can pass a plain Object such as
	  <code>{ tl: 5, tr: 5, bl: 0, br: 0 }</code>.
	  The default value is null (square corners).
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">color</span>:Object</code> (default = <code>null</code>)<code></code> &mdash; The RGB color(s) for the fill.
	  Can be <code>null</code>, a uint, or an Array.
	  If it is <code>null</code>, the rectangle not filled.
	  If it is a uint, it specifies an RGB fill color.
	  For example, pass <code>0xFF0000</code> to fill with red.
	  If it is an Array, it should contain uints
	  specifying the gradient colors.
	  For example, pass <code>[ 0xFF0000, 0xFFFF00, 0x0000FF ]</code>
	  to fill with a red-to-yellow-to-blue gradient.
	  You can specify up to 15 colors in the gradient.
	  The default value is null (no fill).
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">alpha</span>:Object</code> (default = <code>null</code>)<code></code> &mdash; Alpha value(s) for the fill.
	  Can be null, a Number, or an Array.
	  This argument is ignored if <code>color</code> is null.
	  If <code>color</code> is a uint specifying an RGB fill color,
	  then <code>alpha</code> should be a Number specifying
	  the transparency of the fill, where 0.0 is completely transparent
	  and 1.0 is completely opaque.
	  You can also pass null instead of 1.0 in this case
	  to specify complete opaqueness.
	  If <code>color</code> is an Array specifying gradient colors,
	  then <code>alpha</code> should be an Array of Numbers, of the
	  same length, that specifies the corresponding alpha values
	  for the gradient.
	  In this case, the default value is <code>null</code> (completely opaque).
	       </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">gradientMatrix</span>:Matrix</code> (default = <code>null</code>)<code></code> &mdash; Matrix object used for the gradient fill. 
      The utility methods <code>horizontalGradientMatrix()</code>, 
      <code>verticalGradientMatrix()</code>, and
      <code>rotatedGradientMatrix()</code> can be used to create the value for 
      this parameter.
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">gradientType</span>:String</code> (default = <code>linear</code>)<code></code> &mdash; Type of gradient fill. The possible values are
	  <code>GradientType.LINEAR</code> or <code>GradientType.RADIAL</code>.
	  (The GradientType class is in the package flash.display.)
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">gradientRatios</span>:Array</code> (default = <code>null</code>)<code></code> &mdash; (optional default [0,255])
	  Specifies the distribution of colors. The number of entries must match
	  the number of colors defined in the <code>color</code> parameter.
	  Each value defines the percentage of the width where the color is 
	  sampled at 100%. The value 0 represents the left-hand position in 
	  the gradient box, and 255 represents the right-hand position in the 
	  gradient box. 
	 	 </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">hole</span>:Object</code> (default = <code>null</code>)<code></code> &mdash; (optional) A rounded rectangular hole
	  that should be carved out of the middle
	  of the otherwise solid rounded rectangle
	  { x: #, y: #, w: #, h: #, r: # or { br: #, bl: #, tl: #, tr: # } }
	 	  </td></tr></table></p><p><span class="label">See also</span></p><div class="seeAlso">flash.display.Graphics.beginGradientFill()</div></div><a name="getStyle()"></a><a name="getStyle(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getStyle</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function getStyle(styleProp:String):*</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      Returns the value of the specified style property.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">styleProp</span>:String</code> &mdash; Name of the style property.
           </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>*</code> &mdash; The style value. This can be any type of object that style properties can be, such as 
      int, Number, String, etc.
      
      </td></tr></table></div><a name="horizontalGradientMatrix()"></a><a name="horizontalGradientMatrix(Number,Number,Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">horizontalGradientMatrix</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> protected function horizontalGradientMatrix(x:Number, y:Number, width:Number, height:Number):Matrix</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Utility function to create a horizontal gradient matrix.
	 	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; The left edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; The top edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">width</span>:Number</code> &mdash; The width of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">height</span>:Number</code> &mdash; The height of the gradient.
	 	  </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Matrix</code> &mdash; The horizontal gradient matrix. This is a temporary
	  object that should only be used for a single subsequent call
	  to the <code>drawRoundRect()</code> method.
	  
	  </td></tr></table></div><a name="invalidateDisplayList()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateDisplayList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateDisplayList():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      Marks a component so that its <code>updateDisplayList()</code>
      method gets called during a later screen update.
           <p>Invalidation is a useful mechanism for eliminating duplicate
      work by delaying processing of changes to a component until a
      later screen update.
      For example, if you want to change the width and height,
      it would be wasteful to update the component immediately after you
      change the width and then update again with the new height.
      It is more efficient to change both properties and then render
      the component with its new size once.</p>
           <p>Invalidation methods rarely get called.
      In general, setting a property on a component automatically
      calls the appropriate invalidation method.</p>
      
      </p></div><a name="invalidateProperties()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateProperties</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateProperties():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  
	  Calling this method results in a call to the component's
	  <code>validateProperties()</code> method
	  before the display list is rendered.
	 	  <p>For components that extend UIComponent, this implies
	  that <code>commitProperties()</code> is called.</p>
	  
	  </p></div><a name="invalidateSize()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateSize():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  
	  Calling this method results in a call to the component's
	  <code>validateSize()</code> method
	  before the display list is rendered.
	 	  <p>For components that extend UIComponent, this implies
	  that <code>measure()</code> is called, unless the component
	  has both <code>explicitWidth</code> and <code>explicitHeight</code>
	  set.</p>
	  
	  </p></div><a name="move()"></a><a name="move(Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">move</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function move(x:Number, y:Number):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Moves this object to the specified x and y coordinates.
	      	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; The horizontal position, in pixels.
	      	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; The vertical position, in pixels.
	  
	  </td></tr></table></p></div><a name="rotatedGradientMatrix()"></a><a name="rotatedGradientMatrix(Number,Number,Number,Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">rotatedGradientMatrix</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> protected function rotatedGradientMatrix(x:Number, y:Number, width:Number, height:Number, rotation:Number):Matrix</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Utility function to create a rotated gradient matrix.
	 	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; The left edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; The top edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">width</span>:Number</code> &mdash; The width of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">height</span>:Number</code> &mdash; The height of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">rotation</span>:Number</code> &mdash; The amount to rotate, in degrees.
	 	  </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Matrix</code> &mdash; The horizontal gradient matrix. This is a temporary
	  object that should only be used for a single subsequent call
	  to the <code>drawRoundRect()</code> method.
	  
	  </td></tr></table></div><a name="setActualSize()"></a><a name="setActualSize(Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setActualSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setActualSize(newWidth:Number, newHeight:Number):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Sets the height and width of this object.
	      	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">newWidth</span>:Number</code> &mdash; The width, in pixels, of this object.
	      	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">newHeight</span>:Number</code> &mdash; The height, in pixels, of this object.
	  
	  </td></tr></table></p></div><a name="styleChanged()"></a><a name="styleChanged(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">styleChanged</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function styleChanged(styleProp:String):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Whenever any style changes, redraw this skin.
	  Subclasses can override this method
	  and perform a more specific test before calling invalidateDisplayList().
	 	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">styleProp</span>:String</code> &mdash; The name of the style property that changed, or null
	  if all styles have changed.
	  
	  </td></tr></table></p></div><a name="updateDisplayList()"></a><a name="updateDisplayList(Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">updateDisplayList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Programmatically draws the graphics for this skin.
	 	  <p>Subclasses should override this method and include calls
	  to methods such as <code>graphics.moveTo()</code> and
	  <code>graphics.lineTo()</code>.</p>
	 	  <p>This occurs before any scaling from sources
	  such as user code or zoom effects. 
	  The component is unaware of the scaling that takes place later.</p> 
	           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">unscaledWidth</span>:Number</code> &mdash;   The width, in pixels, of this object before any scaling.
	           </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">unscaledHeight</span>:Number</code> &mdash;   The height, in pixels, of this object before any scaling.
	  
	  </td></tr></table></p></div><a name="validateDisplayList()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">validateDisplayList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function validateDisplayList():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  This function is called by the LayoutManager
	  when it's time for this control to draw itself.
	  The actual drawing happens in the <code>updateDisplayList</code>
	  function, which is called by this function.
	  
	  </p></div><a name="validateNow()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">validateNow</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function validateNow():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Validate and update the properties and layout of this object
	  and redraw it, if necessary.
	  
	  </p></div><a name="validateProperties()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">validateProperties</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function validateProperties():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  This function is an empty stub so that ProgrammaticSkin
	  can implement the ILayoutManagerClient  interface.
	  Skins do not call <code>LayoutManager.invalidateProperties()</code>, 
	  which would normally trigger a call to this method.
	  
	  </p></div><a name="validateSize()"></a><a name="validateSize(Boolean)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">validateSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function validateSize(recursive:Boolean = false):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  This function is an empty stub so that ProgrammaticSkin
	  can implement the ILayoutManagerClient  interface.
	  Skins do not call <code>LayoutManager.invalidateSize()</code>, 
	  which would normally trigger a call to this method.
              	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">recursive</span>:Boolean</code> (default = <code>false</code>)<code></code> &mdash; Determines whether children of this skin are validated. 
	  
	  </td></tr></table></p></div><a name="verticalGradientMatrix()"></a><a name="verticalGradientMatrix(Number,Number,Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">verticalGradientMatrix</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> protected function verticalGradientMatrix(x:Number, y:Number, width:Number, height:Number):Matrix</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 3</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
	  Utility function to create a vertical gradient matrix.
	 	  </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; The left edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; The top edge of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">width</span>:Number</code> &mdash; The width of the gradient.
	 	  </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">height</span>:Number</code> &mdash; The height of the gradient.
	 	  </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Matrix</code> &mdash; The horizontal gradient matrix. This is a temporary
	  object that should only be used for a single subsequent call
	  to the <code>drawRoundRect()</code> method.
	  
	  </td></tr></table></div><br/><br/><hr><br/><p></p><center class="copyright"><footer>The Apache Software Foundation</footer><br/>Wed Nov 15 2017, 09:50 AM +01:00  </center></div></body></html><!--The Apache Software Foundation<br/>Wed Nov 15 2017, 09:50 AM +01:00  -->