`
dazhi2010
  • 浏览: 105081 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex中NumericStepper数据循环展示的方法

    博客分类:
  • Flex
阅读更多

前段时间用到了NumericStepper,是一个数字显示组件,可以定义最大值和最小值以及步幅等信息,通过点击向上或向下按钮来空竹数字的增减.但是,没有提供到了最大值之后再点击向上则调到最小值的循环的功能.于是自己通过坚挺click事件的方式将这个功能实现了,但是总感觉不够完美,或者有什么更好的实现方式,请大家借鉴,提意见,大家共同进步!!

首先,定义一个NumericStepper,可以用mxml或者as两种方式,这里是通过as的方式,代码如下:

 

var houreNS:NumericStepper=new NumericStepper();
houreNS.maximum=23;
houreNS.minimum=0;
houreNS.stepSize=1;
houreNS.value=0;
houreNS.addEventListener(MouseEvent.CLICK,nsClickedHandler);

 接下来是这个功能的实现的精髓所在,click时间的处理方法.

处理方法前面的nsChangFlag用来保存点击的状态,到达最大值或者最小值时会将它变成true,在到达最大值之后再点击变大,则会调到最小值循环;减小道理相同.

 

private var nsChangFlag:Boolean = false;
private function nsClickedHandler(e:MouseEvent):void
{
	if(e.target is Button)
	{
		//NumericStepper中两个小按钮的第一个子组件的名称分别是upArrowSkin和downArrowSkin
		var btnSkin:String = (e.target as Button).getChildAt(0).name;
		if(btnSkin == "upArrowSkin")
		{
			if(e.currentTarget.value==e.currentTarget.maximum)
			{
				if(nsChangFlag)
				{
					e.currentTarget.value=e.currentTarget.minimum;
					nsChangFlag = false;
				}else{
					nsChangFlag = true;
				}
			}
		}
		else if(btnSkin == "downArrowSkin")
		{
			if(e.currentTarget.value==e.currentTarget.minimum)
			{
				if(nsChangFlag)
				{
					e.currentTarget.value=e.currentTarget.maximum;
					nsChangFlag = false;
				}else{
					nsChangFlag = true;
				}
			}
		}
	}
}

 挺简单的代码和功能,请勿见笑,欢迎提出宝贵改进意见.

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics