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

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

?? calendardisplay.as

?? 用Flex實現的一個關于減肥系統的web界面,內部沒有實際的業務邏輯,只是一個原形.
?? AS
?? 第 1 頁 / 共 5 頁
字號:
				_computedRange = ranges._computedRange;
				updateDetails();

				dayCount = _tz.rangeDaySpan(_visibleRange);
				_dayCache.count = dayCount;				
				_headerCache.count = dayCount;				
			}			

			
			// alright, we've got the right number of 
			// renderers...now allocate them.
			var tmp:Date = new Date(_visibleRange.start);
			for(var cPos:int = 0;cPos<_columnLength;cPos++)
			{
				for(var rPos:int=0;rPos < _rowLength;rPos++)
				{
					var index:int = rPos + cPos*_rowLength;
					
					var inst:UIComponent = _dayCache.instances[index];
					var header:UIComponent = _headerCache.instances[index];
					// if we're outside the official computed range, we'll pass in a null
					// value, so we get a blank header and grey color. This is debatable
					// UI, I suppose. Should probably be more configurable.
					if(_computedRange.contains(tmp) == false)
					{
						IDataRenderer(inst).data = null;
						IDataRenderer(header).data = null;
					}
					else
					{
						IDataRenderer(inst).data = new Date(tmp);
						IDataRenderer(header).data = new Date(tmp);
					}
					tmp.date++;					
					
				}
			}			
			
			updateEventData();
			

			
			invalidateDisplayList();
		}

		// given a range and display mode, returns the computed and visible
		// ranges for the calendar.  Computed range is the value passed in, expanded
		// to match the unit referred to by displayMode...i.e., expanded to the nearest
		// day, week, or month boundary.  
		// visibleRange is the computedRange expanded to the nearest day or week boundary.	
		private function computeRanges(value:DateRange,displayMode:String):Object
		{
			var _visibleRange:DateRange;
			var _computedRange:DateRange;
			
			switch(displayMode)
			{
				case "day":
					_visibleRange = new DateRange(value.start);
					_tz.expandRangeToDays(_visibleRange,true);
					_computedRange = _visibleRange.clone();
					break;
				case "days":
					_visibleRange = value.clone();
					_tz.expandRangeToDays(_visibleRange,true);
					_computedRange = _visibleRange.clone();
					break;
				case "week":
					_visibleRange = new DateRange(value.start);
					_tz.expandRangeToWeeks(_visibleRange);
					_computedRange = _visibleRange.clone();
					break;
				case "weeks":
					_visibleRange = value.clone();
					_tz.expandRangeToDays(_visibleRange,true);
					_computedRange = _visibleRange.clone();
					_tz.expandRangeToWeeks(_visibleRange);
					break;
				case "month":
				default:
					_visibleRange = new DateRange(value.start);
					_tz.expandRangeToMonths(_visibleRange,true);
					_computedRange = _visibleRange.clone();
					_tz.expandRangeToWeeks(_visibleRange);
			}
			
			return {
				_visibleRange: _visibleRange,
				_computedRange: _computedRange				
			};
		}

		// various cached calculations based on the current state of the calculation
		private function updateDetails():void
		{


			// first, compute the border of the day/event area
			_border.left = 0;
			_border.right = 0;
			_border.top = 0;
			_border.bottom = 0;

			
			switch(layoutMode)
			{
				case LayoutMode.DAYS:
					_border.left = _hourGrid.gutterWidth;
					_border.right = _scroller.measuredWidth;
					break;
				case LayoutMode.WEEKS:
				default:
					break;					
			}

			// now how long (in days) a row and column of the visible range is
			_rowLength = Math.min(MAXIMUM_ROW_LENGTH,_tz.rangeDaySpan(_visibleRange));
			_columnLength = Math.ceil(_tz.rangeDaySpan(_visibleRange)/_rowLength);
			
			// how big each day area will be
			_cellWidth = (unscaledWidth - _border.left - _border.right)/_rowLength;
			_cellHeight = (unscaledHeight - _border.top - _border.bottom)/_columnLength;		

			// and the set of events the intersect our visible range.
			var endingEvents:SortedArray = _allEventsSortedByStart.slice(_visibleRange.start,null,eventEndDateCompare);
			endingEvents.compareFunction = startEventCompare;
			_visibleEvents = endingEvents.slice(null,_visibleRange.end,eventStartDateCompare).values;
			
			// how big one hour is, if we're in day-view mode.
			_hourHeight = Math.max(MIN_HOUR_HEIGHT,_cellHeight / 24);
		}
		
//----------------------------------------------------------------------------------------------------
// Layout functions
//----------------------------------------------------------------------------------------------------

		// our main layout function
		private function generateLayout():void
		{								
			if( _displayMode == "day" || _displayMode == "days" )							
			{
				layoutDays();
			}
			else
			{
				layoutMonth();
			}
		}


		// does the layout 
		private function layoutCells():void
		{		
				for(var cPos:int = 0;cPos<_columnLength;cPos++)
				{
					for(var rPos:int=0;rPos < _rowLength;rPos++)
					{
						var index:int = rPos + cPos*_rowLength;
						var inst:UIComponent = _dayCache.instances[index];
						var header:UIComponent = _headerCache.instances[index];
	
						var target:LayoutTarget = _animator.targetFor(inst);
						target.unscaledHeight = _cellHeight;
						target.unscaledWidth = _cellWidth;
						target.x = _border.left + rPos * _cellWidth;
						target.y = _border.top + cPos * _cellHeight;
	
						target = _animator.targetFor(header);
						target.unscaledHeight = header.measuredHeight;
						target.unscaledWidth = _cellWidth;
						target.x = _border.left + rPos * _cellWidth;
						target.y = _border.top + cPos * _cellHeight;
					}
				}
		}
		
		
		
		// our main layout routine for anything that lays out full days...
		// i.e., day, days, or weeks display mode.
		private function layoutDays():void
		{
			var startOfDay:Date = dateForIndex(0);
			var endOfDay:Date = dateForIndex(1);
			var openEventsDict:Dictionary = new Dictionary();
			var reservations:ReservationAgent = new ReservationAgent();
			var events:Array = _visibleEvents.concat();
			var renderTop:int;
			var data:EventData;
			var renderer:UIComponent;
			var target:LayoutTarget;
			var rPos:int;
			var event:CalendarEvent;
			var header:UIComponent;
			var openingEvents:Array;
			var i:int;
			_allDayAreaHeight = 0;

			// lay out the background day and header renderers
			layoutCells();
			
			// make sure our scrollbar is visible, and in the right place,
			// since we'll be needing it.
			target = _animator.targetFor(_scroller);
			target.initializeFunction = fadeInTarget;
			target.x = unscaledWidth - _scroller.measuredWidth;
			target.y = _border.top;
			target.unscaledWidth = _scroller.measuredWidth;
			target.unscaledHeight = _cellHeight;
			target.alpha = 1;


			// extract the all-day events out of our visible events
			// these will be in order, sorted by start time.
			var allDayEvents:Array = [];
			for(i=events.length-1;i>=0;i--)
			{
				event = events[i];
				if(event.allDay) // || event.range.daySpan > 1)
				{
					allDayEvents.unshift(events.splice(i,1)[0]);
				}
			}
			// now, for each column/day (we only have one row, so we don't bother
			// iterating over rows)
			for(rPos=0;rPos < _rowLength;rPos++)
			{
				var index:int = rPos;
				header = _headerCache.instances[index];
				
				// look at the all-day events that were 'open' on the previous day
				for(var anEvent:* in openEventsDict)
				{
					// if it ended before today, remove it from our open set
					if(anEvent.event.end < startOfDay)
					{
						delete openEventsDict[anEvent];
						// and release its marker reserving space in the 'all day event' 
						// track at the top of the calendar 
						reservations.release(anEvent);
					}
				}
				
				// now if we have any all-day events that haven't started yet,
				// we need to check and see which of them will be starting today.
				if(allDayEvents.length > 0)
				{
					openingEvents = [];
					
					// these are in order sorted by start time, so iterate forward until we find
					// one that starts _later_ than today		
					while(allDayEvents.length > 0 && allDayEvents[0].start.getTime() < endOfDay.getTime())
					{
						// this events starts today, so add it to our list of open events
						data = _eventData[allDayEvents.shift()];
						openEventsDict[data] = true;
						openingEvents.push(data);
					}
					renderTop = header.measuredHeight;
					
					var allDayBorderThickness:Number = getStyle("allDayDividerThickness");
					if(isNaN(allDayBorderThickness))
						allDayBorderThickness = 0;
					
					// now for each event that just opened today	
					for(i=0;i<openingEvents.length;i++)
					{
						data = openingEvents[i];
						// reserve some space for it at the top of the all-day area.
						var reservation:int = reservations.reserve(data);

						// force the renderer into the collapsed 'line' mode, and lay it out.
						// note that while EventData might have multiple renderers associated
						// with it, we know that since we're only looking at a single line of
						// days in our layout, there will only be one renderer here.
						renderer = data.renderers[0];
						ICalendarEventRenderer(renderer).displayMode = "line";
						target = layoutSingleEvent(data,renderer,
							_border.left + rPos * _cellWidth + EVENT_INSET,
							_border.top + renderTop + renderer.measuredHeight * reservation,
							_cellWidth * Math.max(1,_tz.rangeDaySpan(data.range)) - 2*EVENT_INSET,
							renderer.measuredHeight
						);
						// we're tracking how big the all-day-area is, so make sure it grows as necessary to
						// accomodate this renderer.
						_allDayAreaHeight = Math.max(_allDayAreaHeight,target.y + target.unscaledHeight + 2 + allDayBorderThickness);
					}
				}				
				startOfDay.date = startOfDay.date+1;
				endOfDay.date = endOfDay.date+1;														
			}
			
			// ok, we're done laying out our all-day events..now we know how big they'll be.
			// and thus how much space we have to lay our the actual days.  We'll
			// lay out all the trappings of the day area (scrollbar, grid, etc).
				
			// reset our day bounds back to our first day.
			startOfDay = dateForIndex(0);
			endOfDay = dateForIndex(1);
			
			
			// if we didn't have any all day events, this value didn't get set.
			// so make sure it's large enough to accomodate the top of the first header,
			// even if there are no all day events.
			_allDayAreaHeight = Math.max(_allDayAreaHeight,_border.top + header.measuredHeight);
			
			// how big the area allocated for the day itself is.
			_dayAreaHeight = unscaledHeight - _border.bottom - _allDayAreaHeight;
			// we now know the size of a day vs. the amount of space available for it, so
			// update our scroll properties.
			_scroller.setScrollProperties(_dayAreaHeight,0,_hourHeight * 24 - _dayAreaHeight,1);
			// if we don't have a current hour we're scrolled to, calculate an appropriate hour to 
			// render the maximum number of events possible.
			if(isNaN(_scrollHour))
			{
				_scrollHour = computeScrollHourToDisplayEvents(_visibleEvents);
			}
			// if our calendar has been resized, it's possible that our scrollHour is now to high...
			// i.e., if we're scrolled to 10 pm, and we can show four hours, rather than showing off
			// the day, we want to adjust our scrollhour to 8 pm.
			if(_scrollHour * _hourHeight > _hourHeight * 24 - _dayAreaHeight)
				_scrollHour = 24-_dayAreaHeight/_hourHeight;
			
			// update the scrollbar to reflect our now calculated scroll position.
			_scroller.scrollPosition = _scrollHour * _hourHeight;
			
			// now that we know the height of our all day events, we know the size of our day-area.
			// so we can update the mask that will clip out our intra-day events.
			_eventLayer.mask = _eventMask; 
			_eventMask.graphics.clear();
			_eventMask.graphics.beginFill(0);
			_eventMask.graphics.drawRect(0, _allDayAreaHeight,unscaledWidth - _border.right,_dayAreaHeight+1);
			_eventMask.graphics.endFill();

			// make sure our hour gridlines stretches across the 
			// day area. It should be tall enough to stretch across the entire day region, _not_ 
			// just the visible day region.
			target = _animator.targetFor(_hourGrid);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜久久久久久电影| 波多野结衣亚洲| 欧美大片国产精品| 国产精品色哟哟| 国产精品一级片| 精品国产一区二区三区av性色| 亚洲一区二区三区中文字幕在线| 亚洲精品亚洲人成人网在线播放| 亚洲国产人成综合网站| 另类小说欧美激情| 欧美日韩免费观看一区二区三区| gogogo免费视频观看亚洲一| 久久久久久久综合| 丁香一区二区三区| 日韩毛片高清在线播放| 欧美一级午夜免费电影| 精品在线视频一区| 日韩一区二区三区三四区视频在线观看| 国产亚洲美州欧州综合国| 国产精品中文字幕日韩精品 | 91色.com| 欧美人妇做爰xxxⅹ性高电影| 国产精品久久久久久久岛一牛影视 | 亚洲电影一区二区三区| 日本aⅴ亚洲精品中文乱码| 欧美日韩国产综合一区二区| 午夜国产不卡在线观看视频| 欧美视频在线一区| 三级欧美在线一区| 91精品国产麻豆国产自产在线| 亚洲一区二区三区四区在线观看 | 欧美一区二区三区思思人| 国产区在线观看成人精品| 婷婷久久综合九色综合绿巨人| 日韩国产一区二| 麻豆成人91精品二区三区| 欧美日韩夫妻久久| 久久精品国产精品亚洲红杏| 亚洲影院理伦片| 天堂成人免费av电影一区| 久久久久久久久久美女| av成人免费在线| 国产成人免费网站| 日韩精品成人一区二区在线| 成人ar影院免费观看视频| 国产精品久久久久久久久免费丝袜| 91精选在线观看| 在线观看亚洲a| 亚洲视频综合在线| 在线播放91灌醉迷j高跟美女| 美国精品在线观看| 亚洲欧美视频在线观看视频| 欧美性一区二区| 日韩二区在线观看| 亚洲国产精品二十页| 91麻豆免费在线观看| 看片网站欧美日韩| www.综合网.com| 日av在线不卡| 精品久久久久久久久久久久包黑料 | 麻豆视频一区二区| 亚洲精品日韩综合观看成人91| 中文字幕av在线一区二区三区| 久久蜜臀精品av| 26uuu亚洲综合色欧美| 久久综合五月天婷婷伊人| 日韩免费一区二区| 91精品国产丝袜白色高跟鞋| 欧美精品丝袜中出| 欧美一区二区视频观看视频| 67194成人在线观看| 欧美日韩在线播放三区| 欧美人成免费网站| av电影在线观看一区| 日本精品裸体写真集在线观看| 91成人免费电影| 欧美吞精做爰啪啪高潮| 这里只有精品视频在线观看| 欧美精品成人一区二区三区四区| 日韩一级免费观看| 久久天天做天天爱综合色| 国产一区二区三区电影在线观看 | 久久狠狠亚洲综合| 日本免费新一区视频| 亚洲一区二区欧美日韩 | 中文字幕的久久| 亚洲男女一区二区三区| 亚洲午夜免费视频| 亚洲欧美日韩国产一区二区三区 | 国产三级精品在线| 国产精品久久三| 亚洲国产精品影院| 欧美精品一区二区三区高清aⅴ| 日韩午夜av一区| 久久久久久久性| 欧美国产精品v| 成人欧美一区二区三区在线播放| 国产精品国产三级国产aⅴ入口| 亚洲日本护士毛茸茸| 蜜芽一区二区三区| 成人一区二区三区| 欧美日产国产精品| 国产精品福利一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲伊人伊色伊影伊综合网| 久久国内精品自在自线400部| 成人黄色综合网站| 色国产综合视频| 国产偷国产偷精品高清尤物| 五月天丁香久久| 一本色道久久综合亚洲精品按摩| 中文字幕一区二| 国产成人午夜99999| 欧美喷潮久久久xxxxx| 日韩成人免费电影| 国产91在线|亚洲| 久久国产三级精品| 日本黄色一区二区| 国产精品国产三级国产| 波多野结衣中文字幕一区 | 久久精品视频在线看| 亚洲综合网站在线观看| 国产精品1区2区3区| 日本韩国欧美国产| 91在线精品一区二区| 色综合天天在线| 久久网这里都是精品| 久久综合九色综合97_久久久| 日本不卡一二三| 在线观看欧美黄色| 香蕉加勒比综合久久| 国产精品天干天干在观线| 蜜臀91精品一区二区三区| 精品欧美一区二区在线观看| 日韩国产成人精品| 精品女同一区二区| 99精品欧美一区二区三区小说| 蜜桃一区二区三区在线| 国产激情视频一区二区三区欧美| 欧美色男人天堂| 91精品久久久久久蜜臀| 午夜精品久久久久久| 欧美色国产精品| 午夜精品久久久久久久久久| 欧美日韩一级视频| 日韩av中文字幕一区二区| 欧美高清视频在线高清观看mv色露露十八| 一区二区三区四区五区视频在线观看 | av资源站一区| 亚洲婷婷综合久久一本伊一区 | 欧美在线不卡一区| 亚洲成人手机在线| 欧美一区二区在线不卡| 美洲天堂一区二卡三卡四卡视频| 欧美成人伊人久久综合网| 韩国精品免费视频| 中文字幕av免费专区久久| 91丨九色丨国产丨porny| 一区2区3区在线看| 日韩视频一区二区三区| 国产精品一二二区| 亚洲免费视频中文字幕| 欧美精选一区二区| 国精产品一区一区三区mba桃花| 国产色91在线| 91免费国产在线| 日本特黄久久久高潮| xf在线a精品一区二区视频网站| 丁香六月综合激情| 亚洲国产视频一区二区| 精品国产成人在线影院| 波多野结衣欧美| 五月婷婷激情综合| 日韩avvvv在线播放| 亚洲高清在线视频| 久久成人麻豆午夜电影| 日韩欧美激情四射| 亚洲欧美精品午睡沙发| 日韩毛片精品高清免费| 亚洲六月丁香色婷婷综合久久| 337p日本欧洲亚洲大胆精品| 3d成人动漫网站| 精品久久久久99| 亚洲国产精品黑人久久久| 日韩一区二区三| 中文字幕乱码亚洲精品一区| 中文在线一区二区| 1000精品久久久久久久久| 亚洲国产美女搞黄色| 欧美大肚乱孕交hd孕妇| av在线一区二区三区| 免费观看91视频大全| 一区在线观看视频| 日韩免费在线观看| 色悠悠久久综合| 国产成人免费9x9x人网站视频| 亚洲二区在线视频| 国产精品区一区二区三区| 日韩亚洲欧美综合| 欧洲亚洲精品在线|