Простой календарь на ActionScript 3.0

Этот пост посвящён небольшому классу Calendar, который, как очевидно даже из названия, генерирует такой широко распространённый флеш-виджет, как календарь. Календарик получается, правда, довольно простенький, но всё же выглядит он весьма стильно.

Не буду изматывать вас длительными рассуждениями, а сразу же покажу, как использовать класс Calendar в ваших флеш-проектах. Сам класс прилагается к исходнику, ссылка на который, как обычно, в конце поста. Итак, код...

Код ActionScript 3.0:

/* подключаем класс Calendar */ import Calendar; /* создаём экземпляр класса Calendar */ var calendar:Calendar = new Calendar(); /* добавление на сцену */ addChild(calendar); /* позиционируем календарь на сцене */ calendar.x = 200; calendar.y = 100; /* создаём объект Date, из которого будем узнавать текущий год и месяц */ var d:Date = new Date(); /* устанавливаем текущий месяц и год для нашего календаря */ calendar.month = d.getMonth(); calendar.year = d.getFullYear(); /* отрисовка календаря */ calendar.Render();

Результат применения данного кода будет следующим:

Загрузить Adobe Flash Player

Естественно, не стоит забывать, что время берётся флеш-роликом с компьютера пользователя, а, следовательно, корректность работы календаря напрямую зависит от корректности настроек времени и даты на компьютере пользователя.

Ещё один недостаток календаря - его формат. Для отечественных пользователей привычнее иметь дело с календарём, в котором неделя начинается с понедельника, а не с воскресенья. Что же до названия дней недели и месяцев, то никто не мешает их вам перевести на русский язык. Что я и сделал, сохранив переведённый класс, как CalendarRu (тоже прилагается к исходнику).

Код ActionScript 3.0:

import CalendarRu; var calendar:CalendarRu = new CalendarRu(); addChild(calendar); calendar.x = 200; calendar.y = 100; var d:Date = new Date(); calendar.month = d.getMonth(); calendar.year = d.getFullYear(); calendar.Render();

Теперь наш календарик стал гораздо приятнее для русского глаза:

Загрузить Adobe Flash Player

Исходник под Adobe Flash CS5.5 и сам класс Calendar можно скачать по данной ссылке.

Автор: admin

Дата добавления: 2011-11-10

Просмотров: 7143

Рейтинг поста: +15-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-15
> На 2015г он автоматом перейдет или его нужно переводить стрелками?

Календарь по-умолчанию показывает текущий месяц текущего года. Но эти данные считываются с настроек вашего компьютера. Следовательно, если на вашем компьютере дата и время настроены правильно, то и отображаться в календаре они будут правильно.
Комментатор
Комментарий добавил(а): Татьяна
Дата добавления: 2014-12-15
Здравствуйте!Спасибо! Получилось благодаря Вашим объяснениям! А интересно! На 2015г он автоматом перейдет или его нужно переводить стрелками? Что то календарик меня приворожил! Спасибо.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-14
Для этого надо создать новый стиль оформления текстового поля, в котором выводится текущий день + в функции Render отлавливать сам текущий день. Это суть. А более развёрнутый ответ тут: http://edapskov.ru/content/calendar_with_current_day.rar
Комментатор
Комментарий добавил(а): Татьяна
Дата добавления: 2014-12-14
Здравствуйте! Подскажите пожалуйста, можно ли в календарике сделать текущую дату цветной? Если да, то какие изменения внести в код? Я по ошибке этот вопрос задала в другой теме. Извините. Спасибо.
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-03
Огромное Вам спасибо за понимание и опретивный ответ..
Вот такой я "программист"..
Мне скорее подойдет "чайник с опытом"
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-03
Смайлик в коде только не к месту :-) Но я думаю, сможете поправить.
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-03
Магия повторения в программировании не работает :-) Надо так:


/*
подключаем класс Calendar
*/
import Calendar;
/*
создаём экземпляр класса Calendar
*/
var calendar:Calendar = new Calendar();
/*
добавление на сцену
*/
addChild(calendar);
/*
позиционируем календарь на сцене
*/
calendar.x = 50;
calendar.y = 50;
/*
скалируем
*/
calendar.scaleX = 2;
calendar.scaleY = 2;
/*
создаём объект Date, из которого будем узнавать текущий год и месяц
*/
var d:Date = new Date();
/*
устанавливаем текущий месяц и год для нашего календаря
*/
calendar.month = d.getMonth();
calendar.year = d.getFullYear();
/*
отрисовка календаря
*/
calendar.Render();
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-03
Что-то не так..Это я опять с календариком..
Дописала код.
Вот так теперь в кадре

/*
подключаем класс Calendar
*/
//import Calendar;
import CalendarRu;
/*
создаём экземпляр класса Calendar
*/
//var calendar:Calendar = new Calendar();
var calendar:CalendarRu = new CalendarRu();
/*
добавление на сцену
*/
addChild(calendar);
/*
позиционируем календарь на сцене
*/
calendar.x = 200;
calendar.y = 100;
/*
создаём объект Date, из которого будем узнавать текущий год и месяц
*/
var d:Date = new Date();
/*
устанавливаем текущий месяц и год для нашего календаря
*/
calendar.month = d.getMonth();
calendar.year = d.getFullYear();
/*
отрисовка календаря
*/
calendar.Render();

import Calendar;

var calendar:Calendar = new Calendar();

addChild(calendar);

calendar.scaleX = 2;

calendar.scaleY = 2;

показывает ошибку
================
Монтажный кадр 1, слой "Слой 1", кадр 1, строка 36 1151: Конфликт с определением calendar в пространстве имен internal.
===============
Что не так?
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-02
> Ой, я не могу найти. Вы извините. Какая строка? Подскажите, пожалуйста.

Елена, это не в классе, а после создания календаря:


import Calendar;

var calendar:Calendar = new Calendar();
addChild(calendar);

calendar.scaleX = 2;
calendar.scaleY = 2;
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-02
Кстати, если вы хотите только увеличить или уменьшить размер всего календарика, то можно ограничиться скалированием при создании календарика:



calendar.scaleX = 2;

calendar.scaleY = 2;
===================
Ой,я не могу найти.Вы извините .Какая строка?..Подскажите, пожалуйста..
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Страница 3 из 4: 1234
Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика