Простой календарь на 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

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

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

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

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): Татьяна
Дата добавления: 2014-12-21
Здравствуйте! Как привести календарь к привычному виду? Поменяла дни недели. А куда в коде вставить /** gets 1 day of the week in current selected month */
var temp:Date = new Date(_targetYear, _targetMonth);
var startDay:uint = temp.getDay()-1;
if(startDay==4294967295){
startDay=6;
} ? Не знаю! И еще, что обозначают цифры==4294967295 ? Спасибо!
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-17
Сравнила.Проверила.
Все работает.
Спасибо Вам!
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-17
> Но почему-то нет выделения текущей даты при таком раскладе.

Я уже писал: в вашем классе CalendarRu не внесены все те изменения, которые нужны для выделения текущего дня. Я даже место указал - функция Render. Сравните два исходника и поймёте разницу.
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-17
[quote]Не верите? Зайдите внутрь вашего класса Calendar и сравните его содержимое с CalendarRu.[/quote]
Верю.Зашла и вижу,что там все абсолютно одинаково.
А если одинаково,то моему представлению,если я укажу код и в папку с проектом положу CalendarRu
import CalendarRu;

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

флеш-ролик(календарик) должен быть точно таким же.
Но почему-то нет выделения текущей даты при таком раскладе.
Вот ,что не дает мне покоя..
Хотя ,казалось бы, какая разница...подключай класс Calendar и радуйся результату..
Докопаться хочу,где же я запуталась.
Вот..))
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-17
> Т. е. получается, что подключен ли в проекте класс CalendarRu - не подключен, это ничего не меняет.

Елена, CalendarRu - это тот же Calendar, но немного адаптированный для наших пользователей. В вашем исходнике лежит именно CalendarRu, но названный просто Calendar. Короче, вы где-то запутались :-) Не верите? Зайдите внутрь вашего класса Calendar и сравните его содержимое с CalendarRu.
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-17
не уложилась..продолжение
АсtionScript3.0

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


Cкорее всего я что-то не допонимаю..
Помогите ,плииз,разобраться..
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-17
Спасибо за ответ.

[quote]
За настройки внешнего вида текстовых полей отвечает TextFormat (четвёртый параметр). bold - это не шрифт, а жирность. И не факт, что жирность будет там к месту.[/quote]
Здесь я жирность имела в виду.
Хотела посмотреть как будет выглядеть..Возможно,вы правы,может и не к месту.

Со стрелочками я разобралась,где поменять цвет..
[quote]
про методы динамического рисования я уже много раз писал и, с вашего позволения, дам просто ссылку: http://edapskov.ru/pages.php?id=149[/quote]
За ссылку спасибо.

Но я так и не поняла как же класс CalendarRu.

Посмотрите,пожалуйста, мой проект.

http://rghost.ru/59730343

В этом проекте не подключен класс CalendarRu.

И в коде этот класс закомментирован,а вывод текста на русском

Т.е.получается,что подключен ли в проекте класс CalendarRu-не подключен,это ничего не меняет.

Вот это мне не понятно. Очень хотелось бы иметь четкое представление какую все же роль играет этот класс,если достаточно внести изменения в класс Calendar.

В данном случае это добавление строки 14
private var current_days_tf:TextFormat;
в разделе TEXT FORMAT

строки 59
current_days_tf = new TextFormat("Шрифт", размер,цвет);
current_days_tf.align = "center";


АсtionScript3.0
[code]
/*
подключаем класс Calendar
*/
import Calendar;
//import CalendarRu;
/*
создаём экземпляр класса Calendar
*/
var calendar:Calendar = new Calendar();
//var calendar:CalendarRu = new CalendarRu();
/*
добавление на сцену
*/
addChild(calendar);
/*
позиционируем календарь на сцене
*/
calendar.x = 70;
calendar.y = 40;
/*
создаём объект Date, из
Комментатор
Комментарий добавил(а): edapskov
Дата добавления: 2014-12-16
> Хотя изменения я делала в Calendar те же.

Нет, не совсем те. Вы забыли про самый важный фрагмент кода - функцию Render.

> где можно указать шрифт bold

За настройки внешнего вида текстовых полей отвечает TextFormat (четвёртый параметр). bold - это не шрифт, а жирность. И не факт, что жирность будет там к месту.

> поменять цвет окошек под стрелочками (переключение года)

Они там подписаны у автора в комментариях - Buttons. Это кнопки _prevBT и _nextBT. А про методы динамического рисования я уже много раз писал и, с вашего позволения, дам просто ссылку: http://edapskov.ru/pages.php?id=149 . Если и дальше хотите заниматься флешем, то вам всё равно это потребуется.
Комментатор
Комментарий добавил(а): Татьяна
Дата добавления: 2014-12-16
Здравствуйте! Я удовлетворена Вашим ответом. Спасибо!
Комментатор
Комментарий добавил(а): Елена
Дата добавления: 2014-12-16
Здравствуйте.
У меня вопрос по календарику.
Воспользовалась вашим ответом на вопрос Татьяны о выделении текущей даты.
У меня в итоге получилось..
Но не понятно,как же класс CalendarRu.
При его подключении изменения не происходят.
Хотя изменения я делала в Calendar те же.
Не знаю как сюда прицепить архив .
Написала Вам на edapskov@yandex.ru.
Вложила исходники.Посмотрите их пожалуйста.
Добавить комментарий:







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

Идиот-тест

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

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