亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rangeselector.as

?? chart應用蠻廣泛的
?? AS
字號:

	
package examples.customizing {
	import mx.charts.chartClasses.*;
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import mx.controls.*;
	
	public class RangeSelector extends ChartElement {
	
		/* the bounds of the selected region*/
		private var dLeft:Number = 20;
		private var dTop:Number = 20;
		private var dRight:Number = 80;
		private var dBottom:Number = 80;

		/* the x/y coordinates of the start of the tracking region */
		private var tX:Number;
		private var tY:Number;

		/* whether or not a region is selected */
		private var bSet:Boolean = false;

		/* whether or not we're currently tracking */		
		private var bTracking:Boolean = false;

		/* the current position of the crosshairs */
		private var _crosshairs:Point;
		
		/* the four labels for the data bounds of the selected region */
		private var _labelLeft:Label;
		private var _labelRight:Label;
		private var _labelTop:Label;
		private var _labelBottom:Label;
		
		/* constructor */
		public function RangeSelector():void
		{
			super();
			setStyle("color",0);
			/* mousedowns are where we start tracking the selection */
			addEventListener("mouseDown",startTracking);
		
			/* mousemove and rollout are used to track the crosshairs */
			addEventListener("mouseMove",updateCrosshairs);
			addEventListener("rollOut",removeCrosshairs);
			
			/* create our labels */
			_labelLeft = new Label();
			_labelTop = new Label();
			_labelRight = new Label();
			_labelBottom = new Label();			
			addChild(_labelLeft);
			addChild(_labelTop);
			addChild(_labelRight);
			addChild(_labelBottom);
			
			
		}

		/* draw the overlay */
		override protected function updateDisplayList(unscaledWidth:Number,
												   unscaledHeight:Number):void
		{

			super.updateDisplayList(unscaledWidth, unscaledHeight);
			

			var g:Graphics = graphics;
			g.clear();
			
			// draw a big transparent square so the flash player sees us for mouse events */
			g.moveTo(0,0);
			g.lineStyle(0,0,0);
			g.beginFill(0,0);
			g.drawRect(0,0,unscaledWidth,unscaledHeight);
			g.endFill();

			/* draw the crosshairs. Crosshairs are drawn where the mouse is, only when the mouse is over us, so we don't need to transform
			*	to data coordinates
			*/
			if(_crosshairs != null)
			{
				g.lineStyle(1,0x005364,.5);

				g.moveTo(0,_crosshairs.y);
				g.lineTo(unscaledWidth,_crosshairs.y);

				g.moveTo(_crosshairs.x,0);
				g.lineTo(_crosshairs.x,unscaledHeight);				
			}
			
			/* draw the selected region, if there is one */
			if(bSet)
			{
				/* the selection is a data selection, so we want to make sure the region stays correct as the chart changes size and/or ranges.
				*  so we store it in data coordaintes. So before we draw it, we need to transform it back into screen coordaintes
				*/
				var c:Array = [{dx: dLeft, dy: dTop}, {dx:dRight, dy: dBottom}];
				dataTransform.transformCache(c,"dx","x","dy","y");

				/* now draw the region on screen */
				g.moveTo(c[0].x,c[0].y);				
				g.beginFill(0xEEEE22,.2);
				g.lineStyle(1,0xBBBB22);
				g.drawRect(c[0].x,c[0].y,c[1].x - c[0].x, c[1].y - c[0].y);
				g.endFill();


				/* now we're going to draw the decorators indicating the bottom and right edges of the box 
				*/
				g.lineStyle(2,0x995522);
				
				// draw bottom line
				g.moveTo(c[0].x,c[1].y + 9);
				g.lineTo(c[0].x,c[1].y + 15);
				g.moveTo(c[0].x,c[1].y + 12);
				g.lineTo(c[1].x,c[1].y + 12);
				g.moveTo(c[1].x,c[1].y + 9);
				g.lineTo(c[1].x,c[1].y + 15);
				
				// draw right line
				g.moveTo(c[1].x + 9,c[0].y);
				g.lineTo(c[1].x + 15,c[0].y);
				g.moveTo(c[1].x + 12,c[0].y);
				g.lineTo(c[1].x + 12,c[1].y);
				g.moveTo(c[1].x + 9,c[1].y);
				g.lineTo(c[1].x + 15,c[1].y);

				/* now we're going to position the labels at the edges of the box */
				_labelLeft.visible = _labelRight.visible = _labelTop.visible = _labelBottom.visible = true;
				_labelLeft.setActualSize(_labelLeft.measuredWidth,_labelLeft.measuredHeight);
				_labelLeft.move(c[0].x - _labelLeft.width/2,c[1].y + 24);
				_labelRight.setActualSize(_labelRight.measuredWidth,_labelRight.measuredHeight);
				_labelRight.move(c[1].x - _labelRight.width/2,c[1].y + 24 );
				_labelTop.setActualSize(_labelTop.measuredWidth,_labelTop.measuredHeight);
				_labelTop.move(c[1].x + 24,c[0].y - _labelTop.height/2);
				_labelBottom.setActualSize(_labelBottom.measuredWidth,_labelBottom.measuredHeight);
				_labelBottom.move(c[1].x + 24,c[1].y - _labelBottom.height/2);

			} else {
				_labelLeft.visible = _labelRight.visible = _labelTop.visible = _labelBottom.visible = false;				
			}
		}


		/* to make sure we end up in any ranges autogenerated by the axes, we need to describe our data to them
		*/
		override public function describeData(dimension:String,requiredFields:uint):Array
		{
			/* if no region is selected, we have no data */
			if(bSet == false)
				return [];
			
			var dd:DataDescription = new DataDescription();
			
			
			if (dimension == CartesianTransform.HORIZONTAL_AXIS) {
				/* describe the minimum and maximum values we need on screen */
				dd.min = dLeft;
				dd.max = dRight;
			
				
				if((requiredFields & DataDescription.REQUIRED_BOUNDED_VALUES) != 0)
				{
					/* since we don't want our labels sticking off the edge of the chart, we need to ask for 'bounded values' around the selected data.
					*  a bounded value is a pixel margin to the left/right of a specific data point. In this case, we'll ask for the width of our labels
					*/
					dd.boundedValues = [
						new BoundedValue(dLeft),
						new BoundedValue(dRight,_labelLeft.width/2,24 + Math.max(_labelLeft.width,_labelRight.width))
					]
				}
			}
			else {
				dd.min = dBottom;
				dd.max = dTop;
				if((requiredFields & DataDescription.REQUIRED_BOUNDED_VALUES) != 0)
				{
					/* since we don't want our labels sticking off the edge of the chart, we need to ask for 'bounded values' around the selected data.
					*  a bounded value is a pixel margin to the top/bottom of a specific data point. In this case, we'll ask for the height of our labels
					*/
					dd.boundedValues = [
						new BoundedValue(dTop),
						new BoundedValue(dBottom,24 + Math.max(_labelLeft.height,_labelRight.height,_labelTop.height/2))
					]
				}
			}
			
			return [dd];
		}

		override protected function commitProperties():void
		{	
			super.commitProperties();
			

			/* when our data changes, we need to update the text displayed in our labels */
			_labelLeft.text = Math.round(dLeft).toString();
			_labelRight.text = Math.round(dRight).toString();
			_labelTop.text = Math.round(dTop).toString();
			_labelBottom.text = Math.round(dBottom).toString();
			
		}


		override public function mappingChanged():void
		{
			/* since we store our selection in data coordinates, we need to redraw when the mapping between data coordinates and screen coordinates changes
			*/
			invalidateDisplayList();
		}

		private function startTracking(e:MouseEvent) :void
		{
			/* the user clicked the mouse down. First, we need to add listeners for the mouse dragging */
			bTracking = true;
			parentApplication.addEventListener("mouseUp",endTracking,true);
			parentApplication.addEventListener("mouseMove",track,true);

			/* now store off the data values where the user clicked the mouse */
			var dataVals:Array = dataTransform.invertTransform(mouseX,mouseY);
			tX = dataVals[0];
			tY = dataVals[1];
			bSet = false;

			updateTrackBounds(dataVals);
		}

		private function track(e:MouseEvent):void {
			if(bTracking == false)
				return;
			bSet = true;
			updateTrackBounds(dataTransform.invertTransform(mouseX,mouseY));
			e.stopPropagation();
		}

		private function endTracking(e:MouseEvent):void
		{
			/* the selection is complete, so remove our listeners and update one last time to match the final position of the mouse */
			bTracking = false;
			parentApplication.removeEventListener("mouseUp",endTracking,true);
			parentApplication.removeEventListener("mouseMove",track,true);
			e.stopPropagation();
			updateTrackBounds(dataTransform.invertTransform(mouseX,mouseY));
		}

		private function updateCrosshairs(e:MouseEvent):void
		{
			/* the mouse moved over the chart, so grab the mouse coordaintes and redraw */
			_crosshairs = new Point(mouseX,mouseY);
			invalidateDisplayList();
		}
		private function removeCrosshairs(e:MouseEvent):void
		{
			/* the mouse left the chart area, so throw away any stored coordinates and redraw */
			_crosshairs = null;
			invalidateDisplayList();
		}
		private function updateTrackBounds(dataVals:Array):void
		{
			/* store the bounding rectangle of the selection, in a normalized data-based rectangle */
			dRight = Math.max(tX,dataVals[0]);
			dLeft = Math.min(tX,dataVals[0]);
			dBottom = Math.min(tY,dataVals[1]);
			dTop = Math.max(tY,dataVals[1]);

			/* invalidate our data, and redraw */
			dataChanged();
			invalidateProperties();
			invalidateDisplayList();
			
		}
		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av资源网一区| 色噜噜狠狠成人网p站| 亚洲乱码精品一二三四区日韩在线| 日韩一区二区影院| 91麻豆精品国产综合久久久久久| 欧美三级电影网站| 欧美午夜理伦三级在线观看| 91高清视频免费看| 欧美色窝79yyyycom| 欧美日韩免费观看一区三区| 欧美日韩精品久久久| 91麻豆精品国产91久久久久久久久 | 久久久99久久| 日本一区二区电影| 亚洲色图都市小说| 五月天久久比比资源色| 首页综合国产亚洲丝袜| 激情成人午夜视频| 成人午夜精品在线| 色综合天天性综合| 精品视频在线免费看| 日韩欧美激情一区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲视频一区二区在线| 亚洲成人tv网| 国产精品一区在线观看你懂的| 99久久99久久精品免费看蜜桃| 在线免费观看日本欧美| 精品久久久久久久久久久久久久久久久| 欧美精品一区二区三区高清aⅴ| 日本一二三四高清不卡| 亚洲一区自拍偷拍| 久久99精品视频| 91在线观看高清| 日韩欧美一区二区不卡| 欧美国产激情一区二区三区蜜月| 亚洲图片一区二区| 激情文学综合丁香| 在线一区二区三区做爰视频网站| 欧美一区二区三区小说| 亚洲人亚洲人成电影网站色| 五月天激情综合| 成人av第一页| 精品国产免费人成在线观看| 一个色妞综合视频在线观看| 激情国产一区二区| 在线不卡免费欧美| 成人欧美一区二区三区黑人麻豆| 日本女优在线视频一区二区| 色综合久久久久综合体| 国产日产欧美一区| 美女诱惑一区二区| 欧美日韩一区二区不卡| 国产精品美女久久久久久久久久久 | 久久亚洲二区三区| 亚洲第一二三四区| 色综合久久中文字幕| 久久久www成人免费无遮挡大片| 香蕉久久夜色精品国产使用方法| 91色综合久久久久婷婷| 欧美激情一区三区| 国产成a人无v码亚洲福利| 欧美一区二区性放荡片| 婷婷开心激情综合| 色综合久久中文字幕综合网| 欧美激情中文不卡| 国产成人亚洲精品狼色在线| 日韩精品一区二区三区视频播放| 亚洲成a人片在线不卡一二三区 | 欧美美女网站色| 亚洲国产另类av| 日本韩国欧美一区| 亚洲免费电影在线| 91年精品国产| 亚洲永久免费av| 欧美影院午夜播放| 亚洲成人先锋电影| 91精品国产综合久久久蜜臀图片| 亚洲高清视频在线| 91精选在线观看| 麻豆精品国产91久久久久久| 欧美一级午夜免费电影| 日本成人中文字幕| 欧美电影免费观看完整版| 久久99国产精品免费网站| 欧美一区二区三区喷汁尤物| 免费在线观看视频一区| 精品99一区二区三区| 夫妻av一区二区| 日韩一区欧美一区| 欧美日韩在线直播| 免费在线观看不卡| 日本一区二区综合亚洲| 日本韩国欧美在线| 麻豆专区一区二区三区四区五区| 日韩视频中午一区| 国产99精品国产| 亚洲综合色网站| 日韩精品专区在线| 成人app网站| 天堂成人国产精品一区| 久久一区二区三区四区| 99re热视频这里只精品| 午夜欧美2019年伦理| 欧美一区二区播放| 成人免费黄色大片| 亚洲图片欧美综合| 久久午夜免费电影| 91久久一区二区| 麻豆久久久久久| 亚洲精品美腿丝袜| 欧美mv和日韩mv国产网站| 成人黄色国产精品网站大全在线免费观看| 亚洲区小说区图片区qvod| 欧美丰满美乳xxx高潮www| 国产精品一区二区三区乱码| 一区二区三区在线看| 久久嫩草精品久久久精品| 在线观看亚洲一区| 福利电影一区二区三区| 日韩va亚洲va欧美va久久| 日韩一区中文字幕| 久久久久综合网| 91麻豆精品国产无毒不卡在线观看 | 亚洲国产精品尤物yw在线观看| 国产亚洲短视频| 欧美一区二区三区视频免费播放| 99re6这里只有精品视频在线观看| 蜜臀久久久99精品久久久久久| 亚洲人123区| 国产清纯在线一区二区www| 91麻豆精品国产91久久久更新时间| av不卡免费在线观看| 精品中文字幕一区二区| 偷拍亚洲欧洲综合| 一卡二卡欧美日韩| 国产精品久久看| 国产欧美日韩不卡免费| 久久综合九色综合欧美98| 欧美一级日韩不卡播放免费| 欧美羞羞免费网站| av在线不卡观看免费观看| 国产精品99久久不卡二区| 精品一区二区免费| 精品一区二区三区视频在线观看 | 久久www免费人成看片高清| 亚洲综合清纯丝袜自拍| 亚洲三级电影全部在线观看高清| 国产欧美日韩不卡| 日本一区二区成人| 国产精品国产自产拍高清av| 国产视频一区在线播放| 国产亚洲综合av| 久久精品人人做人人爽97| 精品处破学生在线二十三| 欧美精品一区二区三区很污很色的| 日韩一区二区在线观看视频| 欧美一级日韩不卡播放免费| 日韩一级免费一区| 精品福利视频一区二区三区| 久久色.com| 国产视频一区二区在线观看| 国产精品久久久久影院亚瑟 | 国产在线看一区| 九九精品视频在线看| 国产黄人亚洲片| 91美女视频网站| 欧美精品vⅰdeose4hd| 91精品国产全国免费观看| 日韩免费观看2025年上映的电影 | 亚洲欧美在线另类| 亚洲尤物在线视频观看| 蜜臀久久99精品久久久久久9| 美日韩一区二区| 成人国产视频在线观看| 色菇凉天天综合网| 91精品在线一区二区| 国产女主播一区| 亚洲自拍另类综合| 久久精品国产澳门| 成人白浆超碰人人人人| 欧美亚洲国产一区在线观看网站| 欧美日韩mp4| 国产调教视频一区| 亚洲成人av免费| 国产成人无遮挡在线视频| 色综合久久中文综合久久97 | 国产精品 日产精品 欧美精品| 国产xxx精品视频大全| 色狠狠色噜噜噜综合网| 日韩美女主播在线视频一区二区三区| 日本一区二区不卡视频| 日韩电影在线免费| 91麻豆国产精品久久| 日韩一级免费观看| 亚洲一区在线观看免费观看电影高清| 久久国产尿小便嘘嘘| 欧美性三三影院| 亚洲国产精品精华液2区45| 欧美aⅴ一区二区三区视频|