类苹果浏览器标签

来源:互联网 发布:js input text 编辑:程序博客网 时间:2024/04/28 20:12
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"   xmlns:s="library://ns.adobe.com/flex/spark"   xmlns:mx="library://ns.adobe.com/flex/mx"   xmlns:f4cb="com.oreilly.f4cb.*" xmlns:layout="com.ichart.layout.*"   creationComplete="application1_creationCompleteHandler(event)"   backgroundColor="0" xmlns:reflector="com.rictus.reflector.*"><fx:Script><![CDATA[import mx.collections.ArrayCollection;import mx.core.FlexGlobals;import mx.events.FlexEvent;protected function application1_creationCompleteHandler(event:FlexEvent):void{var dp:ArrayCollection=new ArrayCollection();for (var i:int = 0; i < 16; i++) {var item:Object="resource/"+(i+1)+".png";dp.addItem(item);}dataGroup.dataProvider=dp;}]]></fx:Script><fx:Declarations></fx:Declarations><s:Group id="group" width="1000" height="800" horizontalCenter="0" verticalCenter="-300"><s:DataGroup id="dataGroup" width="100%" height="100%" ><s:itemRenderer><fx:Component><s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:s="library://ns.adobe.com/flex/spark"xmlns:mx="library://ns.adobe.com/flex/mx"autoDrawBackground="false"width="400"height="200"><s:Group id="group" top="0" bottom="0" left="0" right="0"><s:Rect top="0" bottom="0" left="0" right="0"><s:fill><s:SolidColor color="0xffffee"/></s:fill><s:stroke><s:SolidColorStroke color="0x123456"/></s:stroke></s:Rect><s:BitmapImage source="{data}" horizontalCenter="0" verticalCenter="0"/><s:Label text="{data}" horizontalCenter="0" verticalCenter="0"/></s:Group></s:ItemRenderer></fx:Component></s:itemRenderer><s:layout><layout:CarouselLayout1 id="carouselLayout"offsetDegree="{slider.value}" degreesPerElementDegree="{hslider.value}" radius="{hslider0.value}" centerRadius="{hslider2.value}" totalDegree="{hslider1.value}"perspectiveProjectionX="{hslider3.value}"perspectiveProjectionY="{hslider4.value}"focalLength="{hslider5.value}"vGap="{hslider6.value}"rowCount="{hslider7.value}"/></s:layout></s:DataGroup></s:Group><s:Label x="437" y="24" color="#FFFFFF" text="总弧度"/><s:Label x="437" y="11" color="#FFFFFF" text="元素偏移半径"/><s:Label x="437" y="1" color="#FFFFFF" text="偏移度数"/><s:Label x="437" y="35" color="#FFFFFF" text="中心半径"/><s:Label x="437" y="45" color="#FFFFFF" text="视图横坐标"/><s:Label x="437" y="55" color="#FFFFFF" text="视图纵坐标"/><s:Label x="437" y="65" color="#FFFFFF" text="focalLenth"/><s:Label x="437" y="75" color="#FFFFFF" text="垂直间隔"/><s:Label x="437" y="85" color="#FFFFFF" text="行数目"/><s:VSlider id="slider" height="300" liveDragging="true"   minimum="0" maximum="360" /><s:HSlider id="hslider" horizontalCenter="0" minimum="0" maximum="120"/><s:HSlider id="hslider0" y="11" horizontalCenter="0" maximum="{dataGroup.width}" minimum="0"/><s:HSlider id="hslider1" y="21" horizontalCenter="0" maximum="360" minimum="0" value="120"/><s:HSlider id="hslider2" y="39" horizontalCenter="0" minimum="{-dataGroup.width}" maximum="0" value="0"/><s:HSlider id="hslider3" y="49" horizontalCenter="0" minimum="-1000" maximum="1000" value="-1"/><s:HSlider id="hslider4" y="59" horizontalCenter="0" minimum="-1000" maximum="1000" value="-1"/><s:HSlider id="hslider5" y="69" horizontalCenter="0" minimum="1" maximum="1000" value="300"/><s:HSlider id="hslider6" y="79" horizontalCenter="0" minimum="0" maximum="100" value="0"/><s:HSlider id="hslider7" y="89" horizontalCenter="0" minimum="1" maximum="8" value="4"/></s:Application>


 

package com.ichart.layout{import flash.geom.Matrix;import mx.core.ILayoutElement;import mx.core.IVisualElement;import spark.components.supportClasses.GroupBase;import spark.layouts.supportClasses.LayoutBase;/** * Layout Base 3D */public class LayoutBase3D extends LayoutBase{// ========================================// private properties// ========================================private var _index:int = 0;// ========================================// public properties// ========================================/** * Index of centered item */public function get index():int{return _index;}public function set index( value:int ):void{if ( _index != value ){_index = value;invalidateTarget();}}override public function set target(value:GroupBase) : void{if ( target != value ){/*if ( target ){target.maintainProjectionCenter = false;for ( var i:int = 0; i < target.numElements; i++ ){var e:ILayoutElement = target.getElementAt( i );// remove any 3D positioninge.setLayoutMatrix( new Matrix(), false );// reset layer to defaultif ( e is IVisualElement ){IVisualElement( e ).depth = 0;}}}*/super.target = value;/*if ( target ){target.maintainProjectionCenter = true;}*/}}// ========================================// constructor// ========================================/** * Constructor */public function LayoutBase3D(){super();}// ========================================// protected methods// ========================================protected function invalidateTarget():void{if ( target ){target.invalidateSize();target.invalidateDisplayList();}}} // end class} // end package
package com.ichart.layout{import com.rictus.reflector.Reflector;import flash.geom.Matrix3D;import flash.geom.PerspectiveProjection;import flash.geom.Point;import flash.geom.Vector3D;import mx.core.IVisualElement;import spark.effects.Rotate3D;/** *  * 作者 黄记新, 2011-12-5 */public class CarouselLayout1 extends LayoutBase3D{private var _offsetDegree:Number=0;private var _degreesPerElementDegree:Number=0;private var _radius:Number=0;private var _centerRadius:Number=0;private var _totalDegree:Number=120;private var _perspectiveProjectionX:Number=-1;private var _perspectiveProjectionY:Number=-1;private var _focalLength:Number=300;private var _vGap:Number=0;private var _rowCount:int=4;public function CarouselLayout1(){super();}[Bindable]public function get rowCount():int{return _rowCount;}public function set rowCount(value:int):void{_rowCount = value;invalidateTarget();}[Bindable]public function get vGap():Number{return _vGap;}public function set vGap(value:Number):void{_vGap = value;invalidateTarget();}[Bindable]public function get focalLength():Number{return _focalLength;}public function set focalLength(value:Number):void{_focalLength = value;invalidateTarget();}[Bindable]public function get perspectiveProjectionY():Number{return _perspectiveProjectionY;}public function set perspectiveProjectionY(value:Number):void{_perspectiveProjectionY = value;invalidateTarget();}[Bindable]public function get perspectiveProjectionX():Number{return _perspectiveProjectionX;}public function set perspectiveProjectionX(value:Number):void{_perspectiveProjectionX = value;invalidateTarget();}[Bindable]public function get centerRadius():Number{return _centerRadius;}public function set centerRadius(value:Number):void{_centerRadius = value;invalidateTarget();}[Bindable]public function get totalDegree():Number{return _totalDegree;}public function set totalDegree(value:Number):void{_totalDegree = value;invalidateTarget();}[Bindable]public function get radius():Number{return _radius;}public function set radius(value:Number):void{_radius = value;invalidateTarget();}[Bindable]public function get degreesPerElementDegree():Number{return _degreesPerElementDegree;}public function set degreesPerElementDegree(value:Number):void{_degreesPerElementDegree = value;invalidateTarget();}[Bindable]public function get offsetDegree():Number{return _offsetDegree;}public function set offsetDegree(value:Number):void{_offsetDegree = value;invalidateTarget();}private function centerPerspectiveProjection(width:Number, height:Number):void {_perspectiveProjectionX = _perspectiveProjectionX != -1 ? _perspectiveProjectionX : width / 2;_perspectiveProjectionY = _perspectiveProjectionY != -1 ? _perspectiveProjectionY : height / 2;var perspectiveProjection:PerspectiveProjection = new PerspectiveProjection();perspectiveProjection.projectionCenter = new Point(_perspectiveProjectionX, _perspectiveProjectionY);perspectiveProjection.focalLength = _focalLength;target.transform.perspectiveProjection = perspectiveProjection;}override public function updateDisplayList(width:Number, height:Number) : void{super.updateDisplayList( width, height );if(!target){return;}centerPerspectiveProjection( width, height );var selectedIndex:int = Math.max( index, 0 );var numElements:int = target.numElements;if(radius==0){radius = width;}var degreesPerElement:Number = totalDegree / rowCount-degreesPerElementDegree;var axis:Vector3D = Vector3D.Y_AXIS;var flag:int=0;for ( var i:uint = 0; i < numElements; i++ ){trace(Math.floor(i/rowCount)+" "+i%rowCount);var element:IVisualElement = target.getElementAt( i );element.setLayoutBoundsSize( NaN, NaN, false ); // reset sizevar elementWidth:Number = element.getLayoutBoundsWidth( false );var elementHeight:Number = element.getLayoutBoundsHeight( false );var degrees:Number = -degreesPerElement * (i % rowCount)-offsetDegree;//var degrees:Number = degreesPerElement * (i - selectedIndex);var matrix:Matrix3D = new Matrix3D();matrix.appendTranslation( -elementWidth/2, -elementHeight / 2, -radius ); // negative so selected index is in frontmatrix.appendRotation( -degrees, axis ); // rotate on y axis/*if(Math.floor(i/rowCount)%2==0){matrix.appendTranslation( width / 2,height / 2 -elementHeight*Math.floor(i/rowCount)-vGap, centerRadius ); // center element in container }else{matrix.appendTranslation( width / 2,height / 2 +elementHeight*Math.floor(i/rowCount)+vGap, centerRadius ); // center element in container }*/matrix.appendTranslation( width / 2,height / 2 +elementHeight*Math.floor(i/rowCount)+vGap*Math.floor(i/rowCount), centerRadius );element.setLayoutMatrix3D( matrix, false );/*if ( element is IVisualElement ){IVisualElement( element ).depth = Math.abs( Math.floor( 180 -  Math.abs( degrees % 360 ) ) );}*/}}}}


 

原创粉丝点击