<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<html>
	<head>
		<title>ActionScript 3.0 Language Reference</title>
		<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
		<link rel="stylesheet" href="print.css" type="text/css" media="print" />
		<script language="javascript" type="text/javascript" src="asdoc.js" />
	</head>
	<body>
		<a name="top"></a>
		<table class="titleTable" cellpadding="0" cellspacing="0">
		  <tr>
			<td>
			  <table class="titleTable" cellpadding="0" cellspacing="0">
				<tr>
				  <td class="titleTableTitle" align="left">ActionScript&#xA0;3.0&#xA0;Language&#xA0;and&#xA0;Components&#xA0;Reference</td>
				  <td class="titleTableTopNav" align="right">
					<a target="classFrame" href="package-summary.html" onclick="loadClassListFrame('all-classes.html')"> All Packages </a>&#xA0;|&#xA0;<a target="classFrame" href="class-summary.html" onclick="loadClassListFrame('all-classes.html')"> All Classes </a>&#xA0;|&#xA0;<a target="classFrame" href="all-index-A.html" onclick="loadClassListFrame('index-list.html')"> Index </a>&#xA0;|&#xA0;<a href="" onclick="top.location=top.classFrame.location"> No Frames </a>
				  </td>
				</tr>
			  </table>
			</td>
			<td class="titleTableLogo" align="right" rowspan="3"><img src="images/logo.jpg" class="logoImage" title="Apache Flex Logo" alt="Apache Flex Logo" /></td>
		  </tr>
		  <tr>
			<td>
			  <table class="titleTable" cellpadding="0" cellspacing="0">
				<tr class="titleTableRow2">
				  <td class="titleTableSubTitle" id="subTitle" align="left">&#xA0;</td>
				  <td class="titleTableSubNav" id="subNav" align="right">
					<a id="propertiesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('propertySummary');" style="display:none">Properties</a><span id="propertiesBar" style="display:none"> | </span><a id="packagePropertiesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('propertySummary');" style="display:none">Properties</a><span id="packagePropertiesBar" style="display:none"> | </span><a id="constructorLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('constructorSummary');" style="display:none">Constructor</a><span id="constructorBar" style="display:none"> | </span><a id="methodsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('methodSummary');" style="display:none">Methods</a><span id="methodsBar" style="display:none"> | </span><a id="packageFunctionsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('methodSummary');" style="display:none">Functions</a><span id="packageFunctionsBar" style="display:none"> | </span><a id="eventsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('eventSummary');" style="display:none">Events</a><span id="eventsBar" style="display:none"> | </span><a id="stylesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('styleSummary');" style="display:none">Styles</a><span id="stylesBar" style="display:none"> | </span><a id="SkinPartLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('SkinPartSummary');" style="display:none"> Skin Parts </a><span id="SkinPartBar" style="display:none"> | </span><a id="SkinStateLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('SkinStateSummary');" style="display:none"> Skin States </a><span id="SkinStateBar" style="display:none"> | </span><a id="effectsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('effectSummary');" style="display:none">Effects</a><span id="effectsBar" style="display:none"> | </span><a id="constantsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('constantSummary');" style="display:none">Constants</a><span id="constantsBar" style="display:none"> | </span><a id="packageConstantsLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('constantSummary');" style="display:none">Constants</a><span id="packageConstantsBar" style="display:none"> | </span><a id="interfacesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('interfaceSummary');" style="display:none">Interfaces</a><span id="interfacesBar" style="display:none"> | </span><a id="classesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('classSummary');" style="display:none">Classes</a><span id="classesBar" style="display:none"> | </span><a id="packageUseLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('package-use.html');" style="display:none">Use</a><span id="packageUseBar" style="display:none"> | </span><a id="examplesLink" href="#top" onclick="javascript:titleBar_gotoClassFrameAnchor('includeExamplesSummary');" style="display:none">Examples</a>
				  </td>
				</tr>
				<tr class="titleTableRow3">
				  <td colspan="3">&#xA0;</td>
				</tr>
			  </table>
			</td>
		  </tr>
		</table>
	</body>
</html>

