FlowContainer组件,自动态改变子组件布局

Eric Cancil原发布的FlowContainer组件链接好像大多都失效,我组件整理了一下,共大家学习使用
简介:FlowContainer组件,它可以实现子组件自动换行的功能。当某个子组件的大小动态改变的时候,它会根据自身的大小和子组件的总大小调整布局:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:container="com.appdivision.view.container.*">
		<container:FlowContainer id="fc"
			verticalGap="{hGSlider.value}" horizontalGap="{vGSlider.value}"
			width="{wSlider.value}" height="{hSlider.value}"
			/>
			
			
		<mx:VBox
			backgroundColor="white"
			right="0" top="0"
			>
			<mx:FormItem
				label="width">
				<mx:HSlider id="wSlider"
					liveDragging="true"
					tickInterval="50"
					value="500"
					minimum="10" maximum="{this.width}"/>
			</mx:FormItem>
			<mx:FormItem
				label="height">
				<mx:HSlider id="hSlider"
					liveDragging="true"
					tickInterval="50"
					value="500"
					minimum="10" maximum="{this.height}"/>
			</mx:FormItem>
			<mx:FormItem
				label="vertical gap">
				<mx:HSlider id="hGSlider"
					liveDragging="true"
					tickInterval="1"
					value="1"
					minimum="1" maximum="100"/>
			</mx:FormItem>
			<mx:FormItem
				label="horizontal gap">
				<mx:HSlider id="vGSlider"
					liveDragging="true"
					tickInterval="1"
					value="1"
					minimum="1" maximum="100"/>
			</mx:FormItem>
			<mx:FormItem
				label="Direction">
				<mx:ComboBox id="directionCombo"
					change="{fc.direction = directionCombo.selectedLabel}"
					dataProvider="{[FlowContainerLayout.HORIZONTAL, FlowContainerLayout.VERTICAL]}"/>
			</mx:FormItem>
		</mx:VBox>
		<mx:Script>
			<![CDATA[
				import mx.effects.Move;
				import mx.effects.easing.Bounce;
				import com.appdivision.view.container.FlowContainerLayout;
				import mx.effects.Resize;
				import mx.controls.Button;
				override protected function childrenCreated():void{
					super.childrenCreated();
					
					for(var i :Number = 0; i < 50; i ++){
						var b:Button = new Button();
						b.width = 150;
						b.height = 25;
						b.label = 'Click to expand';
						var r:Resize = new Resize(b);
						r.easingFunction = Bounce.easeOut;
						b.setStyle('resizeEffect', r);
						b.addEventListener(MouseEvent.CLICK, onClick);
						fc.addChild(b);
					}
				}
				
				private function onClick(e:MouseEvent):void {
					var b:Button = e.target as Button;	
					//target是事件的调用对象(event dispatcher)、事件发送者,
					//currentTarget是事件的处理对象(event processor)、事件处理者
					if(!b)return;
					if(b.width > 150 || b.height > 25) {
						b.width = 150;
						b.height = 25;
						b.label = 'Click to expand';
					} else {
						b.width = getRandom(b.width, 500);
						b.height = getRandom(b.height, 500);
						b.label = 'Click to contract';
					}
				}
				
				public function getRandom(_min:Number, _max:Number):Number {
					var tNumber:Number;
					 tNumber = Math.round(Math.random()*(_max-_min))+_min;
					return tNumber;
				}
			]]>
		</mx:Script>
</mx:Application>


此外还有一个更重要的flex包要导入项目:com.jar

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值