My Layout Flex 4
来源:互联网 发布:刘涛整容了吗 知乎 编辑:程序博客网 时间:2024/05/16 00:47
Import my own spark.components -Skin :
Properties :
/**
*
* coco layout
* author : coco
**/
package coco_layout
{
import flash.geom.Matrix3D;
import flash.geom.Vector3D;
import mx.core.ILayoutElement;
import mx.core.IVisualElement;
import spark.components.supportClasses.GroupBase;
import spark.layouts.supportClasses.LayoutBase;
public class CocoLayout_Layout extends LayoutBase
{
//----------------------------------------------
//
// Constructor
//
//----------------------------------------------
public function CocoLayout_Layout()
{
}
//----------------------------------------------
//
// Properties
//
//----------------------------------------------
private var totalWidth:Number=0;
private var maxWidth:Number = 0;
private var radiuIn:Number = 0;
private var itemWidth:Number = 0;
/**Get the total width of all items*/
private function getTotalWidth():void
{
var iter:LayoutIterator = new LayoutIterator(target);
var element:ILayoutElement;
while(element = iter.nextElement())
{
-->element.setLayoutBoundsSize(NaN,NaN);
var perferredWidth:Number = element.getLayoutBoundsWidth(false);
totalWidth += perferredWidth;
maxWidth = Math.max(maxWidth,perferredWidth);
}
radiuIn = totalWidth*0.5/Math.PI;
}
//----------------------------------------------
//
// Overridden methods : LayoutBase
//
//----------------------------------------------
override public function set target(value:GroupBase) : void
{
super.target = value;
if(target)
{
target.maintainProjectionCenter = true;
}
}
override public function measure() : void
{
getTotalWidth();
}
override public function updateDisplayList(containerwidth:Number, containerheight:Number) : void
{
var iter:LayoutIterator = new LayoutIterator(target);
var el:ILayoutElement = iter.nextElement();
itemWidth = -el.getLayoutBoundsWidth(false)/2;
iter.reset();
while(el = iter.nextElement())
{
el.setLayoutBoundsSize(NaN,NaN,false);
var elementWidth:Number = el.getLayoutBoundsWidth(false);
var elementHeight:Number = el.getLayoutBoundsHeight(false);
var degrees:Number = 360 * (itemWidth + elementWidth/2) / totalWidth;
//Calculate and set the Matrix3D
var matrix3D:Matrix3D = new Matrix3D();
matrix3D.appendTranslation(-elementWidth/2,-elementHeight/2,-radiuIn);
matrix3D.appendRotation(degrees,Vector3D.Y_AXIS);
matrix3D.appendRotation(10,Vector3D.X_AXIS);
matrix3D.appendTranslation(containerwidth/2,containerheight/2,radiuIn);
el.setLayoutMatrix3D(matrix3D,false);
//Determines the order in which items inside of groups and datagroups are rendered.
//Groups and DataGroups order their items based on their layer property,
// with the lowest layer in the back, and the higher in the front.
//items with the same layer value will appear in the order
//they are added to the Groups item list
if (el is IVisualElement)
IVisualElement(el).layer = Math.abs( Math.floor(180 - Math.abs(degrees % 360)) );
itemWidth += elementWidth;
}
}
}
}
import spark.components.supportClasses.GroupBase;
import mx.core.ILayoutElement;
class LayoutIterator
{
private var _target:GroupBase;
private var _curIndex:int = -1;
private var _totalElements:int;
public function LayoutIterator(target:GroupBase):void
{
_totalElements = target.numElements;
_target = target;
}
public function nextElement():ILayoutElement
{
while(_curIndex < _totalElements - 1)
{
var element:ILayoutElement = _target.getElementAt(++_curIndex);
if(element && element.includeInLayout)
{
return element;
}
}
return null;
}
public function reset():void
{
_curIndex = -1;
}
}
- My Layout Flex 4
- My Skin Flex 4
- flex-layout
- flex-layout
- Flex layout机制
- flex-layout Responsive API
- [Flex]Flex SDK 4(Gumbo)改善的Layout和Scroller(一)
- [Flex]Flex SDK 4(Gumbo)改善的Layout和Scroller(二)
- android布局控件flex-layout
- angular4 Flex Layout开发实践
- Learn how to create a simple virtual layout in Flex 4
- (总结)flex-layout响应式布局
- flex弹性盒布局(layout)
- Changing the layout direction of a form item in Flex
- ExtJS Layout 4
- Layout
- Layout
- layout
- 2进制在组合数学中的应用
- Windows编程中的堆管理
- 小技巧:用Javascript数组处理多个字符串的连接问题
- Proxy源代码分析——谈谈如何学习Linux网络编程
- ip地址段比较
- My Layout Flex 4
- C#反射动态生成对象的关键代码
- Windows操作系统堆和栈的区别
- linux 2.6.14内核的移植(基于gec2410开发板)
- VC制作地图及公交查询系统
- NOT EXISTS替代NOT IN EXISTS替换DISTINCT 识别‘低效执行’的SQL语句
- Eclipse中cvs的使用介绍[附图]
- HDU 1102 Constructing Roads
- linux启动过程---bootloader原理