リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ カレンダーを作る方法

ActionScript

カレンダーを作る方法

カレンダーを表示させるサンプル。
7(日)×6(週)個のテキストフィールドをステージ上に配置し、配列変数と繰返し(for)とDateを使用。

【サンプル】

JavaScriptを有効にし、最新のFlashPlayerをインストールお願いしますGet Adobe Flash player


【ActionScript3.0 サンプルソースコード】

//今日の日付取得
var now:Date=new Date();

//月増減変数変数
var monthUpDown:int=0;

//テキストフィールドの配列
var dateList:Array = [text1,text2,text3,text4,text5,text6,text7,
  text8,text9,text10,text11,text12,text13,text14,
  text15,text16,text17,text18,text19,text20,text21,
  text22,text23,text24,text25,text26,text27,text28,
  text29,text30,text31,text32,text33,text34,text35,
  text36,text37,text38,text39,text40,text41,text42];

//テキストカラー
var sundayColor = 0xFF0000;    //日曜 赤
var saturdayColor = 0x0000FF;  //土曜 青
var weekdayColor = 0x000000;   //平日  黒
var holidayColor = 0xFF0000;   //祝日  赤

//関数と関連付け
next_bt.addEventListener(MouseEvent.CLICK, nextMonth);
back_bt.addEventListener(MouseEvent.CLICK, backMonth);
addEventListener(Event.ENTER_FRAME, cal);

//次の月
function nextMonth(event:Event):void {
	monthUpDown+=1;
}

//前の月
function backMonth(event:Event):void {
	monthUpDown-=1;
}

/*---------------------------------------日付の取得と配置---------------------------------------*/
function cal(event:Event):void {

	//1日の曜日取得
	var now2:Date = new Date(now.fullYear, now.month + monthUpDown, 1, 0, 0, 0, 0);

	//年と月の表示
	textYear.text=String(now2.fullYear);//年
	textMonth.text=String(now2.month+1);//月


	//曜日変換配列 日→-5,月→1,火→0,水→-1,木→-2,金→-3,土→-4
	var youbi:Array = [-5,1,0,-1,-2,-3,-4];

	//日付を表示する処理
	for (var i:int=0; i<42; i++) {
		
		//テキストフィールドのリセット
		dateList[i].text = "";
		dateList[i].background = false;

		//各テキストフィールドの日付
		var hinichi=i+youbi[now2.day];
		var now3:Date = new Date(now.fullYear, now.month + monthUpDown, hinichi, 0, 0, 0, 0);

		//テキストのベースカラー
		if (now3.day==0) {
			dateList[i].textColor=sundayColor;
		} else if (now3.day==6) {
			dateList[i].textColor=saturdayColor;
		} else {
			dateList[i].textColor=weekdayColor;
		}
		
		//指定月の日のみ表示
		if (now3.month==(now.month + monthUpDown%12 + 12)%12) {
			dateList[i].text=String(now3.date);
		}
		
		//今日の色
		if (now3.month==(now.month + monthUpDown%12 + 12)%12) {
			if (now3.toDateString()==now.toDateString()) {
				dateList[i].background = true;//テキスト背景の塗り有
				dateList[i].backgroundColor = 0xCCCCCC;//テキスト背景の色
			}
		}
		
		/*---------------------------------祝日始まり---------------------------------*/
		var holiday:String=String(now3.fullYear)+"."+String(now3.month+1)+"."+String(now3.date);

		//年月日をそのまま入力 例)2008.11.3→(2008)(11)(3)
		if ( holiday == String(2008)+"."+String(1)+"."+String(1)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(2)+"."+String(11)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(3)+"."+String(20)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(4)+"."+String(29)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(5)+"."+String(3)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(5)+"."+String(5)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(5)+"."+String(6)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(7)+"."+String(21)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(9)+"."+String(15)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(9)+"."+String(23)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(10)+"."+String(13)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(11)+"."+String(3)) {
			dateList[i].textColor = holidayColor;
		}
		
		if ( holiday == String(2008)+"."+String(11)+"."+String(24)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2008)+"."+String(12)+"."+String(23)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(1)+"."+String(1)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(1)+"."+String(12)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(2)+"."+String(11)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(3)+"."+String(20)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(4)+"."+String(29)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(5)+"."+String(4)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(5)+"."+String(5)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(5)+"."+String(6)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(7)+"."+String(20)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(9)+"."+String(21)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(9)+"."+String(22)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(9)+"."+String(23)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(10)+"."+String(12)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(11)+"."+String(3)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(11)+"."+String(23)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2009)+"."+String(12)+"."+String(23)) {
			dateList[i].textColor = holidayColor;
		}

		if ( holiday == String(2010)+"."+String(1)+"."+String(1)) {
			dateList[i].textColor = holidayColor;
		}


		/*---------------------------------祝日終わり---------------------------------*/
		
	}

}
last update 2008.7.24
参考・出典等
Riptac 繰返し処理は「for」
Riptac 複数の値をメモリさせる「配列」とは
Riptac 条件で処理を変える「ifとelse」とは
Riptac 時間を取得しテキストで表示する方法
Riptac 時間を取得し個別に表示する方法

▲page top

topmemoblogtestaboutmail
Copylight(C)2008 Riptac. All Rights Reserved.