Уроки Flash: Створення календаря, Програми для роботи з графікою, Програмні керівництва, статті

Отже, почнемо. Сьогодні ми будемо робити календар, з можливістю переміщатися по роках і місяцях.
Те що у нас повинно вийти:


1. Створіть документ 570×570 пікселів з кольором фону # DEDEDD

Урок по створенню календаря *

2. Далі намалюйте прямокутник довільних розмірів з Кольором ліній # C2C1C1 і кольором заливки # E0DFE3

32.Осталось тільки створити новий шар “as” і в першому кадрі вставити код:







Code

/ / Оголошуємо масив monmas, що містить назви місяців
var monmas: Array = new Array ([“Січень”], [“Лютий”], [“Март”], [“Апрель”], [“Май”], [“Червень”], [“Липень”], [“Август”], [“Вересень”], [“Жовтень”], [“Листопад”], [“Грудень”]);
/ / Оголошуємо масив daymas, що містить 8 елементів – 1 порожній, решта 7 – назви днів тижня
var daymas: Array = new Array ([“Пн”], [“Вт”], [“Ср”], [“Чт”], [“Пт”], [“Сб”], [“НД”]) ;
/ / Оголошуємо масив cold, що містить кількість днів у місяцях в невисокосний рік
var cold:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
/ / Оголошуємо новий об’єкт Date – my_date
var my_date:Date = new Date();
/ * Date_default Якщо = true, то будуть розглядатися
поточні дата і час, інакше дата і час можуть бути призначені.
Поки залишимо true, що б при відкритті флешки показувалися поточний місяць і рік. * /
date_default = true;
/ * Оголошуємо новий об’єкт TextFormat – my_txt. У ньому будуть
зберігатися настройки тексту в комірках. * /
var my_txt:TextFormat = new TextFormat();
/ * Align – вирівнювання, size – розмір, font – шрифт. Можуть бути й інші
параметри. * /
my_txt.align = “center”;
my_txt.size = 27;
my_txt.font = “Times New Roman”;
/ * Призначення змінних
den – число, dned – день тижня, ye – рік, mon – місяць
perem – змінна, яка позначає положення перемички flag * /
if (date_default) {
var den = _root.my_date.getDate();
var dned = _root.my_date.getDay();
var ye = _root.my_date.getFullYear();
var mon = _root.my_date.getMonth();
var perem = 3;
}
/ * Функція, яка підраховує день тижня 1-го числа цього місяця
з будь-якого числа і відповідним йому дню тижня * /
function dn1vm(dvm, dnvm) {
/ / Dvm – число, dnvm – день тижня
var dn = 0;
dn = 8-((dvm-dnvm)%7);
if (dn>7) {
 dn -= 7;
}
return (dn);
/ / Повертає день тижня
}
/ * Функція, яка визначає високосний чи рік … * /
function vis(ye) {
/ / Ye – рік
if (ye%4 == 0) {
 return (true);
} else {
 return (false);
}
}
/ / Функція, яка повертає кількість днів з першого 1 січня.
function dns1(mon, mmm) {
/ / Mon – місяць mmm – число
var xq = 0;
var xw = 0;
for (xq; xq<mon; xq++) {
 xw += _root.cold[xq];
}
/ / ^ Підсумовуємо дні всіх місяців
if ((vis) and (mon>=2)) {
 xw++;
}
/ / ^ Якщо високосний рік і поточний місяць пізніше лютого, то додається 1 до числа днів
xw += mmm;
/ / ^ Додаємо до кількості днів число і vВозвращаем кількість днів.
return (xw);
}
/ * Функція, яка видає день тижнів першого
числа наступного місяця * /
function dn1sm(dned, mon) {
/ / Dned – день тижня mon – місяць
var er = _root.cold[mon];
/ / ^ Er – кількість днів у місяці
if (_root.vis(_root.ye) and _root.mon == 1) {
 er++;
}
/ / ^ Перевірка на високосному
if (mon == 11) {
 _root.ye++;
 _root.mon = -1;
}
/ * ^ Якщо місяць – грудень, то глобальна змінна
ye увелічіваеться на один, а так як ця функия используеться
перед інкрементом місяця, то глобальна змінна місяць mon – (січень-1)
*/
er = er%7+dned;
/ * ^ Залишок від ділення числа er на 7 буде день
тижня останнього числа місяця. А якщо додати до цього числа
день тижня Vи зробимо перевірку на перенаповнення числа, то ми отримаємо
день тижня першого числа * /
if (er>7) {
 er -= 7;
}
return (er);
/ / ^ Повертаємо день тижня першого числа
}
/ * Функція, яка используеться
для виведення значень глобальних змінних після
кнопки назад * /
function dn1pm(dned, mon) {
/ / Dned – день тижня, заданого числа mon – місяць поточний
if (mon-1 == -1 // mon-1 == 1) {
/ / VЕслі місяць – січень.
 if (mon == 0) {
  _root.ye–;
  _root.mon = 11;
/ / VДень тижні 1-ого січня …
  dned = _root.dn1vm(_root.den, dned);
/ / VДекремент dend, з перевіркою на вихід за межі допустимих значень
  if (dned-1<0) {
   dned += 6;
  } else {
   dned–;
  }
/ / VНазначеніе глобальної змінної dned (день тижня)
  _root.dned = _root.dn1vm(31, dned);
/ / VНазначеніе глобальної змінної den (число)
  _root.den = 1;
 }
/ / VЕслі попередній місяць – лютий.
 if (mon-1 == 1) {
  if (_root.vis(_root.ye)) {
/ / Якщо рік високосний.
   if (dned-1<0) {
    dned += 6;
   } else {
    dned–;
   }
   _root.mon–;
   _root.dned = _root.dn1vm(29, dned);
  } else {
   if (dned-1<0) {
    dned += 6;
   } else {
    dned–;
   }
   _root.mon–;
   _root.dned = _root.dn1vm(28, dned);
  }
 }
} else {
 if (dned-1<0) {
  dned += 6;
 } else {
  dned–;
 }
 _root.dned = _root.dn1vm(_root.cold[mon-1], dned);
 _root.mon–;
}
}
/ * Функція призначена для створення потрібної кількості текстових полів
і забивання їх значеннями * /
function postr(mon, ye, den, dned) {
/ / VСоздается 2 порожніх мувікліп
_root.areahead.createEmptyMovieClip(“area2”, 1);
_root.areabody.createEmptyMovieClip(“area1”, 1);
/ / VВ верхньому создаеться текстове поле, в якому буде друкуватися заголовок календаря
_root.areahead.area2.createTextField(“textm”, 1, 0, 0, _root.areahead._width, _root.areahead._height);
/ / Vк створеному текстовому полю застосовується стиль my_txt
_root.areahead.area2.textm.setNewTextFormat(_root.my_txt);
/ / VВиводіться значення місяця та року
_root.areahead.area2.textm.text = _root.monmas[mon]+”, “+ye;
/ / VУчтановка заборони виділення тексту в текстовому полі
_root.areahead.area2.textm.selectable = false;
var nam:Array = [];
var por = 0;
var nnn = 0;
for (nx=1; nx<=7; nx++) {
 for (ny=1; ny<=8; ny++) {
  nam[nx, ny] = “ned”+nx+ny;
  por++;
/ / В нижньому створеному мувікліп створюється текстове поле
  _root.areabody.area1.createTextField(nam[nx, ny], por, _root.areabody._width/8*(ny-1), _root.areabody._height/7*(nx-1), _root.areabody._width/8, _root.areabody._height/7);
/ / Vк створеному текстовому полю застосовується стиль my_txt
  _root.areabody.area1[nam[nx, ny]].setNewTextFormat(_root.my_txt);
/ / VУчтановка заборони виділення тексту в текстовому полі
  _root.areabody.area1[nam[nx, ny]].selectable = false;
/ / VЕслі верхній рядок то виводить у кожному текстовому полі цього рядка назва місяця
  if ((ny != 1) and (nx == 1)) {
   _root.areabody.area1[nam[nx, ny]].text = _root.daymas[por-2];
  }
/ / VЕслі поле з числами
  if ((ny != 1) and (nx != 1)) {
   nnn++;
   prov = _root.cold[_root.mon];
   if (_root.vis(_root.ye) and _root.mon == 1) {
    prov++;
   }
   if (nnn-(dn1vm(den, dned)-1)>0) {
/ / VПроверка на високосний рік і місяць – лютий
    if (((vis) and (mon == 1)) and (nnn-(dn1vm(den, dned)-1)<=29)) {
     _root.areabody.area1[nam[nx, ny]].text = nnn-(dn1vm(den, dned)-1);
    }
/ / Перевірка на вихід з області допустимих значень.
    if (nnn-(dn1vm(den, dned)-1)<=prov) {
     _root.areabody.area1[nam[nx, ny]].text = nnn-(dn1vm(den, dned)-1);
    } else {
     _root.areabody.area1[nam[nx, ny]].text = “”;
    }
   }
  }
/ / VЕслі на поле висвітлюються поточний місяць.
  if ((_root.perem == 3 and ny>1) // (_root.ye == _root.my_date.getFullYear() and _root.mon == _root.my_date.getMonth() and ny>1)) {
/ / Якщо істина, то віконечко “obvod” з бібліотеки атачіться на сцену. Йому призначаються координати поточного текстового поля
   if ((nnn-(dn1vm(den, dned)-1) == _root.my_date.getDate()) and (_root.my_date.getMonth() == mon) and (_root.my_date.getFullYear() == ye)) {
    this.attachMovie(“obvod”, “ob”, 1, {_x:(_root.areabody._width/8*(ny-1))+_root.areabody._x, _y:(_root.areabody._height/7*(nx-1))+_root.areabody._y});
   }
  } else if (ny != 1) {
   removeMovieClip(“ob”);
  }
  prov = _root.cold[_root.mon];
 
  if (_root.vis(_root.ye) and _root.mon == 1) {
   prov++;
  
  }
  if (nnn-(dn1vm(den, dned)-1)<prov) {
   f = true;
  } else {
   f = false;
  }
  if (ny == 1 and f == true) {
   if (nx != 1) {
    _root.areabody.area1[nam[nx, ny]].text = Math.floor(_root.dns1(mon+1, nnn)/7)-3;
   }
  }
 }
}
}
/ / VЕслі встановлено відображення поточної дати, то в функцію _root.postr передається поточна дата.
if (date_default) {
_root.postr(_root.my_date.getMonth(), _root.my_date.getFullYear(), _root.my_date.getDate(), _root.my_date.getDay());
}
/ / VФункція визначає дії якщо радіокнопка Рік активна.
pogod.onRelease = function() {
date_default = false;
_root.perem = 1;
_root.flag._x = _root.pogod._x;
};
/ / VФункція визначає дії якщо радіокнопка Місяць активна.
pomes.onRelease = function() {
date_default = false;
_root.perem = 2;
_root.flag._x = _root.pomes._x;
};
/ / VФункція визначає дії якщо радіокнопка Поточна активна.
function def() {
date_default = true;
_root.perem = 3;
_root.den = _root.my_date.getDate();
_root.dned = _root.my_date.getDay();
_root.ye = _root.my_date.getFullYear();
_root.mon = _root.my_date.getMonth();
_root.flag._x = _root.defaul._x;
_root.postr(_root.my_date.getMonth(), _root.my_date.getFullYear(), _root.my_date.getDate(), _root.my_date.getDay());
}
/ / Функція, яка визначає які дії потрібно виконати, якщо натиснута кнопка nex
function nextsh() {
if (_root.perem == 2) {
 var q = dn1sm(dn1vm(_root.den, _root.dned), _root.mon);
 _root.mon++;
 _root.dned = q;
 _root.den = 1;
 _root.postr(_root.mon, _root.ye, 1, q);
}
if (_root.perem == 1) {
 if ((_root.vis(_root.ye) and _root.mon<=1) // (_root.vis(_root.ye+1) and _root.mon>1)) {
  _root.dned += 2;
 } else {
  _root.dned++;
 }
 if (_root.dned>6) {
  _root.dned -= 7;
 }
 _root.ye++;
 _root.postr(_root.mon, _root.ye, _root.den, _root.dned);
}
}
/ / Функція, яка визначає які дії потрібно виконати, якщо натиснута кнопка prev
function prevsh() {
if (_root.perem == 2) {
 dn1pm(_root.dned, _root.mon);
 _root.postr(_root.mon, _root.ye, _root.den, _root.dned);
}
if (_root.perem == 1) {
 if ((_root.vis(_root.ye) and _root.mon>1) // (_root.vis(_root.ye-1) and _root.mon<=1)) {
  _root.dned -= 2;
 } else {
  _root.dned–;
 }
 _root.ye–;
 if (_root.dned<0) {
  _root.dned += 7;
 }
 _root.postr(_root.mon, _root.ye, _root.den, _root.dned);
}
}
/ / Vбез коментарів
defaul.onRelease = function() {
def();
};
nex.onRelease = function() {
nextsh();
};
prev.onRelease = function() {
prevsh();
};

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*