2006/1/17 久米
| 機能 | ムービークリップ | ||
| 1 | CellMC セルの作成 |
|
![]() |
| 2 | CallendarMC の作成 |
|
![]() |
head_mcの中にボタンを2つ設定する
/*
* 祝日配列取得関数
* 引数yとmは年と月
* 戻り値は祝日の配列
* 使用例 holidayArray=findHoliday(yearValue, monthValue);
* for文の中で if(holidayArray[i]) cellArray[count].setTextColor(0xFF0000);//赤
*/
function findHoliday(y, m) {
var h=new Array(32);//祝日設定配列 trueが祝日 最終的にholidayArrayへ代入
for(var i=0; i<32; i++){
h[i]=false;
}
// その月の最初の月曜日が何日かを算出
var monday = 1;
while(true) {
var m_date=new Date(y, m-1, monday);//
if(m_date.getDay()==1) break;
monday++;
}
// 祝日をセット
switch(m){
case 1:
// 元旦
h[1] = true;
// 成人の日
if(y < 2000) {
h[15] = true;
} else {
h[monday+7] = true;
}
break;
case 2:
// 建国記念日
h[11] = true;
break;
case 3:
// 春分の日
if(y > 1979 && y < 2100) {
var tmp = Math.floor(20.8431+(y-1980)*0.242194-Math.floor((y-1980)/4));
h[tmp] = true;
}
break;
case 4:
// 天皇誕生日(1988まで) or みどりの日
h[29] = true;
break;
case 5:
// 憲法記念日
h[3] = true;
// 子どもの日
h[5] = true;
break;
case 7:
// 海の日
if(y > 2002) {
h[monday+14] = true;
} else if(y > 1994) {
h[21] = true;
}
break;
case 9:
// 敬老の日
if(y < 2003) {
h[15] = true;
} else {
h[monday+14] = true;
}
// 秋分の日
if(y > 1979 && y < 2100) {
var tmp = Math.floor(23.2488+(y-1980)*0.242194-Math.floor((y-1980)/4));
h[tmp] = true;
}
break;
case 10:
// 体育の日
if(y < 2000) {
h[10] = true;
} else {
h[monday+7] = true;
}
break;
case 11:
// 文化の日
h[3] = true;
// 勤労感謝の日
h[23] = true;
break;
case 12:
// 天皇誕生日
if(y > 1988) {
h[23] = true;
}
break;
}
var lastday=new Date(y, m, 0);//来月の1日から1日引いた
var days=lastday.getDate();//今月の日数
// 国民の休日
if(y > 1985) {
for(var i = 1;i < days;i++) {
if(h[i] && h[i+2]) {
h[i+1] = true;
i = i + 3;
}
}
}
// 振り替え休日
var sunday = monday - 1;
if(sunday == 0) sunday = 7;
for(var i = sunday;i < days;i = i + 7) {
if(h[i]) {
h[i+1] = true;
}
}
return h;
}
|