http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/d43c133c/TourDeFlex/TourDeFlex_content/flex4.0/CustomLayout-FlickrWheel/srcview/source/WheelLayout.as.html ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex_content/flex4.0/CustomLayout-FlickrWheel/srcview/source/WheelLayout.as.html b/TourDeFlex/TourDeFlex_content/flex4.0/CustomLayout-FlickrWheel/srcview/source/WheelLayout.as.html new file mode 100644 index 0000000..90cc2e4 --- /dev/null +++ b/TourDeFlex/TourDeFlex_content/flex4.0/CustomLayout-FlickrWheel/srcview/source/WheelLayout.as.html @@ -0,0 +1,525 @@ +<!-- + 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. +--> +<!-- saved from url=(0014)about:internet --> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>WheelLayout.as</title> +<link rel="stylesheet" type="text/css" href="../SourceStyles.css"/> +</head> + +<body><pre><span class="ActionScriptpackage">package</span> +<span class="ActionScriptBracket/Brace">{</span> + +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Matrix</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Matrix3D</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Point</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Rectangle</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Vector3D</span>; + +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ILayoutElement</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">IVisualElement</span>; + +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">spark</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">components</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">supportClasses</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">GroupBase</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">spark</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">NavigationUnit</span>; +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">spark</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">layouts</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">supportClasses</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">LayoutBase</span>; + +<span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">WheelLayout</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">LayoutBase</span> +<span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">// Constructor +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">WheelLayout</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">super</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">// Properties +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> + <span class="ActionScriptComment">//---------------------------------- +</span> <span class="ActionScriptComment">// gap +</span> <span class="ActionScriptComment">//---------------------------------- +</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_gap</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + + <span class="ActionScriptASDoc">/** + * The gap between the items + */</span> + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">gap</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Number</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_gap</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">gap</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">_gap</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">layoutTarget</span>:<span class="ActionScriptDefault_Text">GroupBase</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">invalidateSize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">invalidateDisplayList</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptComment">//---------------------------------- +</span> <span class="ActionScriptComment">// axisAngle +</span> <span class="ActionScriptComment">//---------------------------------- +</span> + <span class="ActionScriptASDoc">/** + * @private + * The total width of all items, including gap space. + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_totalWidth</span>:<span class="ActionScriptDefault_Text">Number</span>; + + <span class="ActionScriptASDoc">/** + * @private + * Cache which item is currently in view, to facilitate scrollposition delta calculations + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_centeredItemIndex</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceBegin</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceEnd</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_centeredItemDegrees</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + + <span class="ActionScriptASDoc">/** + * The axis to tilt the 3D wheel + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_axis</span>:<span class="ActionScriptDefault_Text">Vector3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptOperator">,</span> 1<span class="ActionScriptOperator">,</span> 0.1<span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptASDoc">/** + * The angle to tilt the axis of the wheel + */</span> + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">axisAngle</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">_axis</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">cos</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PI</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">/</span>180<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">si n</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PI</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">/</span>180<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">layoutTarget</span>:<span class="ActionScriptDefault_Text">GroupBase</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">invalidateSize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">invalidateDisplayList</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptASDoc">/** + * @private + * Given the radius of the sphere, return the radius of the + * projected sphere. Uses the projection matrix of the + * layout target to calculate. + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">projectSphere</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">radius</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">radius1</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Number</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fl</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">transform</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">perspectiveProjection</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">focalLength</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">alpha</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">asin</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">radius1</span> <span class="ActionScriptOperator">/</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">fl</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">fl</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">tan</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">alpha</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">*</span> 2; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptASDoc">/** + * @private + * Given the totalWidth, maxHeight and maxHalfWidthDiagonal, calculate the bounds of the items + * on screen. Uses the projection matrix of the layout target to calculate. + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">projectBounds</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">totalWidth</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxWidth</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxHeight</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxHalfWidthDiagonal</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Point</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Use the the total width as a circumference of an imaginary circle which we will use to +</span> <span class="ActionScriptComment">// align the items in 3D: +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">radius</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">*</span> 0.5 <span class="ActionScriptOperator">/</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PI</span>; + + <span class="ActionScriptComment">// Now since we are going to arrange all the items along circle, middle of the item being the tangent point, +</span> <span class="ActionScriptComment">// we need to calculate the minimum bounding circle. It is easily calculated from the maximum width item: +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">boundingRadius</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">sqrt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">+</span> 0.25 <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">maxWidth</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">maxWidth</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">projectedBoundsW</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxHalfWidthDiagonal</span> <span class="ActionScriptOperator">+</span> 2 <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">+</span> + <span class="ActionScriptDefault_Text">projectSphere</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">boundingRadius</span> <span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">projectedBoundsH</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">abs</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxHalfWidthDiagonal</span> <span class="ActionScriptOperator">+</span> 2 <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">+</span> + <span class="ActionScriptDefault_Text">maxHeight</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span>; + + <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">projectedBoundsW</span> <span class="ActionScriptOperator">+</span> 10<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">projectedBoundsH</span> <span class="ActionScriptOperator">+</span> 10<span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptASDoc">/** + * @private + * Iterates through all the items, calculates the projected bounds on screen, updates _totalWidth member variable. + */</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">calculateBounds</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Point</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Calculate total width: +</span> <span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">=</span> 0; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxHeight</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxWidth</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxD</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + + <span class="ActionScriptComment">// Add up all the widths +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">iter</span>:<span class="ActionScriptDefault_Text">LayoutIterator</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span>; + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">preferredWidth</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getPreferredBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">preferredHeight</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getPreferredBoundsHeight</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptComment">// Add up item width +</span> <span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">preferredWidth</span>; + + <span class="ActionScriptComment">// Max up item size +</span> <span class="ActionScriptDefault_Text">maxWidth</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxWidth</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">preferredWidth</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">maxHeight</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxHeight</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">preferredHeight</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptDefault_Text">maxD</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">max</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">maxD</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">sqrt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">preferredWidth</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">preferredWidth</span> <span class="ActionScriptOperator">/</span> 4 <span class="ActionScriptOperator">+</span> + <span class="ActionScriptDefault_Text">preferredHeight</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">preferredHeight</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptComment">// Add up the gap +</span> <span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">gap</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">numVisited</span>; + + <span class="ActionScriptComment">// Project +</span> <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">projectBounds</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_totalWidth</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxWidth</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxHeight</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">maxD</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">// Overridden methods: LayoutBase +</span> <span class="ActionScriptComment">// +</span> <span class="ActionScriptComment">//-------------------------------------------------------------------------- +</span> + <span class="ActionScriptASDoc">/** + * @private + */</span> + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">set</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span>:<span class="ActionScriptDefault_Text">GroupBase</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Make sure that if layout is swapped out, we clean up +</span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">&&</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">maintainProjectionCenter</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">iter</span>:<span class="ActionScriptDefault_Text">LayoutIterator</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span>; + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">setLayoutMatrix</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Matrix</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*triggerLayout*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">super</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">target</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">value</span>; + + <span class="ActionScriptComment">// Make sure we turn on projection the first time the layout +</span> <span class="ActionScriptComment">// gets assigned to the group +</span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">maintainProjectionCenter</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">measure</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bounds</span>:<span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">calculateBounds</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">measuredWidth</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span>; + <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">measuredHeight</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">updateDisplayList</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">unscaledWidth</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">unscaledHeight</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Get the bounds, this will also update _totalWidth +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bounds</span>:<span class="ActionScriptDefault_Text">Point</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">calculateBounds</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptComment">// Update the content size +</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">setContentSize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">unscaledWidth</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">radius</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_totalWidth</span> <span class="ActionScriptOperator">*</span> 0.5 <span class="ActionScriptOperator">/</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PI</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gap</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">gap</span>; + <span class="ActionScriptDefault_Text">_centeredItemDegrees</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">MAX_VALUE</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">scrollPosition</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">totalWidthSoFar</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptComment">// Subtract the half width of the first element from totalWidthSoFar: +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">iter</span>:<span class="ActionScriptDefault_Text">LayoutIterator</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">el</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span>; + <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getPreferredBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> 2; + + <span class="ActionScriptComment">// Set the 3D Matrix for all the elements: +</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">reset</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Size the item, no need to position it, since we'd set the computed matrix +</span> <span class="ActionScriptComment">// which defines the position. +</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">setLayoutBoundsSize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">NaN</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">NaN</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">elementWidth</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getLayoutBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">elementHeight</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getLayoutBoundsHeight</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">degrees</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 360 <span class="ActionScriptOperator">*</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">elementWidth</span><span class="ActionScriptOperator">/</span>2 <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">scrollPosition</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + + <span class="ActionScriptComment">// Remember which item is centered, this is used during scrolling +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">curDegrees</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">degrees</span> <span class="ActionScriptOperator">%</span> 360; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">abs</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">curDegrees</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator"><</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">abs</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_centeredItemDegrees</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">_centeredItemDegrees</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">curDegrees</span>; + <span class="ActionScriptDefault_Text">_centeredItemIndex</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">curIndex</span>; + <span class="ActionScriptDefault_Text">_centeredItemCircumferenceBegin</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">gap</span>; + <span class="ActionScriptDefault_Text">_centeredItemCircumferenceEnd</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">elementWidth</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">gap</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptComment">// Calculate and set the 3D Matrix +</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">m</span>:<span class="ActionScriptDefault_Text">Matrix3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Matrix3D</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">m</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">appendTranslation</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">elementWidth</span><span class="ActionScriptOperator">/</span>2<span class="ActionScriptOperator">,</span> <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">elementHeight</span><span class="ActionScriptOperator">/</span>2 <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptO perator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">m</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">appendRotation</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">degrees</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">m</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">appendTranslation</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">unscaledWidth</span><span class="ActionScriptOperator">/</span>2<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">unscaledHeight</span><span class="ActionScriptOperator">/</span>2<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">*</span> <span class="ActionScriptDefault_Text">_axis</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">setLayoutMatrix3D</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">m</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*triggerLayout*/</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptComment">// Update the layer for a correct z-order +</span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptReserved">is</span> <span class="ActionScriptDefault_Text">IVisualElement</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">IVisualElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">depth</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">abs</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">floor</span><span class="ActionScriptBracket/Brace">(</span>180 <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">abs</span><span class="ActionScriptBracket/Brace">(</span><span class="Acti onScriptDefault_Text">degrees</span> <span class="ActionScriptOperator">%</span> 360<span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptComment">// Move on to next item +</span> <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">elementWidth</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">gap</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">scrollPositionFromCenterToNext</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">next</span>:<span class="ActionScriptDefault_Text">Boolean</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Number</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">iter</span>:<span class="ActionScriptDefault_Text">LayoutIterator</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">_centeredItemIndex</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">next</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElementWrapped</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">prevElementWrapped</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">el</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> 0; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">elementWidth</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getLayoutBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">value</span>:<span class="ActionScriptDefault_Text">Number</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">next</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_centeredItemDegrees</span> <span class="ActionScriptOperator">></span> 0.1<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_centeredItemCircumferenceEnd</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceBegin</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> 2; + + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceEnd</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">elementWidth</span><span class="ActionScriptOperator">/</span>2; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">></span> <span class="ActionScriptDefault_Text">_totalWidth</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptReserved">else</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_centeredItemDegrees</span> <span class="ActionScriptOperator"><</span> <span class="ActionScriptOperator">-</span>0.1<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_centeredItemCircumferenceEnd</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceBegin</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> 2; + + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_centeredItemCircumferenceBegin</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">elementWidth</span><span class="ActionScriptOperator">/</span>2; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator"><</span> 0<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">value</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">protected</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">scrollPositionChanged</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">invalidateDisplayList</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getHorizontalScrollPositionDelta</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">navigationUnit</span>:<span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Number</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">g</span>:<span class="ActionScriptDefault_Text">GroupBase</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">g</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptDefault_Text">g</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">numElements</span> <span class="ActionScriptOperator">==</span> 0<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> 0; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">value</span>:<span class="ActionScriptDefault_Text">Number</span>; + + <span class="ActionScriptReserved">switch</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">navigationUnit</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">LEFT</span>: + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span> <span class="ActionScriptOperator">-</span> 30; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator"><</span> 0<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">RIGHT</span>: + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span> <span class="ActionScriptOperator">+</span> 30; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">></span> <span class="ActionScriptDefault_Text">_totalWidth</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">value</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PAGE_LEFT</span>: + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">scrollPositionFromCenterToNext</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span>; + + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">PAGE_RIGHT</span>: + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">scrollPositionFromCenterToNext</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">true</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span>; + + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">HOME</span>: + <span class="ActionScriptReserved">return</span> 0; + + <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">NavigationUnit</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">END</span>: + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_totalWidth</span>; + + <span class="ActionScriptReserved">default</span>: + <span class="ActionScriptReserved">return</span> 0; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptASDoc">/** + * @private + */</span> + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">getScrollPositionDeltaToElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">index</span>:<span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">Point</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">layoutTarget</span>:<span class="ActionScriptDefault_Text">GroupBase</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">null</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">gap</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">this</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">gap</span>; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">totalWidthSoFar</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">iter</span>:<span class="ActionScriptDefault_Text">LayoutIterator</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptBracket/Brace">)</span>; + + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">el</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">null</span>; + <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getLayoutBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">/</span> 2; + + <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">reset</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">null</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">&&</span> <span class="ActionScriptDefault_Text">iter</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">curIndex</span> <span class="ActionScriptOperator"><=</span> <span class="ActionScriptDefault_Text">index</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">elementWidth</span>:<span class="ActionScriptDefault_Text">Number</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getLayoutBoundsWidth</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">false</span> <span class="ActionScriptComment">/*postTransform*/</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">+=</span> <span class="ActionScriptDefault_Text">gap</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">elementWidth</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Point</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">totalWidthSoFar</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">elementWidth</span> <span class="ActionScriptOperator">/</span> 2 <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">gap</span> <span class="ActionScriptOperator">-</span> <span class="ActionScriptDefault_Text">layoutTarget</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">horizontalScrollPosition</span><span class="ActionScriptOperator">,</span> 0<span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptASDoc">/** + * @private + */</span> + <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">updateScrollRect</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">w</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">h</span>:<span class="ActionScriptDefault_Text">Number</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">g</span>:<span class="ActionScriptDefault_Text">GroupBase</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">g</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptReserved">return</span>; + + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">clipAndEnableScrolling</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptComment">// Since scroll position is reflected in our 3D calculations, +</span> <span class="ActionScriptComment">// always set the top-left of the srcollRect to (0,0). +</span> <span class="ActionScriptDefault_Text">g</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">scrollRect</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Rectangle</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">verticalScrollPosition</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">w</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">h</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptReserved">else</span> + <span class="ActionScriptDefault_Text">g</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">scrollRect</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">null</span>; + <span class="ActionScriptBracket/Brace">}</span> +<span class="ActionScriptBracket/Brace">}</span> +<span class="ActionScriptBracket/Brace">}</span> + +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ILayoutElement</span>; + +<span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">spark</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">components</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">supportClasses</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">GroupBase</span>; + +<span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">LayoutIterator</span> +<span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_curIndex</span>:<span class="ActionScriptDefault_Text">int</span>; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_numVisited</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">totalElements</span>:<span class="ActionScriptDefault_Text">int</span>; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_target</span>:<span class="ActionScriptDefault_Text">GroupBase</span>; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_loopIndex</span>:<span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> -1; + <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_useVirtual</span>:<span class="ActionScriptDefault_Text">Boolean</span>; + + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">curIndex</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">int</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">_curIndex</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">LayoutIterator</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">target</span>:<span class="ActionScriptDefault_Text">GroupBase</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">index</span>:<span class="ActionScriptDefault_Text">int</span><span class="ActionScriptOperator">=</span>-1<span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptDefault_Text">totalElements</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">numElements</span>; + <span class="ActionScriptDefault_Text">_target</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">target</span>; + <span class="ActionScriptDefault_Text">_curIndex</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">index</span>; + <span class="ActionScriptDefault_Text">_useVirtual</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">layout</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">useVirtualLayout</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">nextElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_curIndex</span> <span class="ActionScriptOperator"><</span> <span class="ActionScriptDefault_Text">totalElements</span> <span class="ActionScriptOperator">-</span> 1<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_useVirtual</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptDefault_Text">_target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getVirtualElementAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">_curIndex</span><span class="ActionScriptBracket/Brace">)</span> : + <span class="ActionScriptDefault_Text">_target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getElementAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">_curIndex</span><span class="ActionScriptBracket/Brace">)</span>; + <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">el</span> <span class="ActionScriptOperator">&&</span> <span class="ActionScriptDefault_Text">el</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">includeInLayout</span><span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">_numVisited</span>; + <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">el</span>; + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptBracket/Brace">}</span> + <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">null</span>; + <span class="ActionScriptBracket/Brace">}</span> + + <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">prevElement</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_curIndex</span> <span class="ActionScriptOperator">></span> 0<span class="ActionScriptBracket/Brace">)</span> + <span class="ActionScriptBracket/Brace">{</span> + <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">el</span>:<span class="ActionScriptDefault_Text">ILayoutElement</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_useVirtual</span> <span class="ActionScriptOperator">?</span> <span class="ActionScriptDefault_Text">_target</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getVirtualElementAt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">--</span><span class="ActionScriptDefault_Text">_curIndex</span><span class="ActionScriptBracket/Brace">)</span> : + <s
<TRUNCATED>