PDA

View Full Version : [AS3] Calendar



marcusJones
November 20th, 2007, 12:42 AM
I had a hard time finding a script for a calendar in actionscript 3, so I borrowed a couple techniques from Andrei Firoiu's script in actionscript 2. It's nothing major, just displays a calendar. Have fun.



////////////////////////////////////////////
// created by marcusJones - 11.19.2007 //
// based on the script by Andrei Firoiu. //
// do whatever you want with it. //
////////////////////////////////////////////


package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class Calendar extends MovieClip{
var calendar:MovieClip = new MovieClip();
var monthsOfYear:Array = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "Octomber", "November", "December");
var daysOfWeek:Array = new Array("Sunday", "Monday", "Tuesday", "Wennesday", "Thursday", "Friday", "Saturday");
var daysOfMonths:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var currentDate:Date = new Date();
var myDate:Date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);//provided by Andrei Firoiu
var month_mc:MovieClip = new MovieClip();
var day_mc:MovieClip;
var days_mc:MovieClip = new MovieClip();
var daysNo:Number;
var startDay:Number;
var i:Number;

public function Calendar(){
publishMonth();
publishDays();

calendar.x = 20;
calendar.y = 20;
this.addChild(calendar);
}

public function publishMonth(){
var month_txt:TextField = new TextField();
month_txt.text = monthsOfYear[currentDate.getMonth()] + " " + currentDate.fullYear;
month_txt.autoSize = TextFieldAutoSize.LEFT;

var month_tf = new TextFormat();
month_tf.font = "HelveticaNeue Condensed";
month_tf.color = 0x000000;
month_tf.size = 20;
month_txt.setTextFormat(month_tf);month_mc.x = 30;
month_mc.y = 0;
month_mc.addChild(month_txt);
calendar.addChild(month_mc);
}

public function publishDays(){
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay = myDate.getDay();
var row:Number = 0;

for (i = 1; i < daysNo+1; i++){
day_mc = new MovieClip();
day_mc.name = "days"+i;
days_mc.addChild(day_mc);
//provided by Andrei Firoiu\\
day_mc.x = startDay*25;
day_mc.y = (row+1)*20;
loadDays();
startDay++;
if(startDay >= 7){
startDay = 0;
row++;
}
////////////////////////////
}
days_mc.x = -80;
days_mc.y = 20;
calendar.addChild(days_mc);
}

public function loadDays(){
var dayLabel:String = i.toString();
var holder:MovieClip = new MovieClip();
holder.name = dayLabel;
day_mc.addChild(holder);

var label_txt:TextField = new TextField();
label_txt.name = dayLabel+"_txt";
label_txt.autoSize = TextFieldAutoSize.RIGHT;
label_txt.text = dayLabel;
label_txt.mouseEnabled = false;

var day_tf = new TextFormat();
day_tf.font = "HelveticaNeue Condensed";
day_tf.color = 0x000000;
day_tf.size = 15;
label_txt.setTextFormat(day_tf);
holder.addChild(label_txt);
}
}
}

mprzybylski
November 20th, 2007, 10:58 AM
can you post an example swf? thanks.

freddymx
November 20th, 2007, 02:07 PM
Hi, good job... I'd try to extends the class with this example:
Calendar.as


////////////////////////////////////////////
// created by marcusJones - 11.19.2007 //
// based on the script by Andrei Firoiu. //
// do whatever you want with it. //
////////////////////////////////////////////

package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.events.MouseEvent;

public class Calendar extends MovieClip{

var calendar:MovieClip = new MovieClip();
var monthsOfYear:Array = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
var daysOfWeek:Array = new Array("Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado");
var daysOfMonths:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var currentDate:Date;
var myDate:Date;
var month_mc:MovieClip = new MovieClip();
var day_mc:MovieClip;
var days_mc:MovieClip = new MovieClip();
var daysNo:Number;
var startDay:Number;
var i:Number;

public function Calendar(__x:Number, __y:Number, fecha:String = null){
if(fecha){
currentDate = new Date(fecha);
} else {
currentDate = new Date();
}
myDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);//provided by Andrei Firoiu

publishMonth();
publishDays();

calendar.x = __x;
calendar.y = __y;
this.addChild(calendar);
}

public function publishMonth(){
var month_txt:TextField = new TextField();
month_txt.text = monthsOfYear[currentDate.getMonth()] + " " + currentDate.fullYear;
month_txt.autoSize = TextFieldAutoSize.LEFT;

var month_tf = new TextFormat();
month_tf.font = "HelveticaNeue Condensed";
month_tf.color = 0x000000;
month_tf.size = 20;
month_txt.setTextFormat(month_tf);
month_txt.selectable = false;
month_mc.x = 30;
month_mc.y = 0;
month_mc.addChild(month_txt);
calendar.addChild(month_mc);
}

public function publishDays(){
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay = myDate.getDay();
var row:Number = 0;

for (i = 1; i < daysNo+1; i++){
day_mc = new MovieClip();
day_mc.name = "days"+i;
days_mc.addChild(day_mc);
//provided by Andrei Firoiu\\
day_mc.x = startDay*25;
day_mc.y = (row+1)*20;

loadDays();
startDay++;
if(startDay >= 7){
startDay = 0;
row++;
}
////////////////////////////
}
days_mc.x = -80;
days_mc.y = 20;
calendar.addChild(days_mc);
}

public function loadDays(){
var dayLabel:String = i.toString();
var holder:MovieClip = new MovieClip();
holder.name = dayLabel;
day_mc.addChild(holder);

var label_txt:TextField = new TextField();
label_txt.name = dayLabel+"_txt";
label_txt.autoSize = TextFieldAutoSize.RIGHT;
label_txt.text = dayLabel;
label_txt.selectable = false;
label_txt.mouseEnabled = true;

var day_tf = new TextFormat();
day_tf.font = "HelveticaNeue Condensed";
day_tf.color = 0x000000;
day_tf.size = 15;
label_txt.setTextFormat(day_tf);
label_txt.addEventListener(MouseEvent.CLICK, getDia);
holder.addChild(label_txt);
}

private function getDia(evt:MouseEvent){
var dia = evt.currentTarget.text;
var mes = currentDate.getMonth() + 1;
var ano = currentDate.getFullYear();
trace (dia+"/"+mes+"/"+ano);
}
}
}


example.fla


var calendario:Calendar = new Calendar(100,100, "02/01/2005");
addChild(calendario);

Pixelcache
December 31st, 2007, 10:05 AM
I am new to AS3 so how could I change the color of the current date so it is different from the others on the calendar?

Xoxo
December 31st, 2007, 04:24 PM
How can I manage to start the week on monday?

Nice work! Thank you very much!!

Pixelcache
December 31st, 2007, 05:38 PM
You will need to change this section in the code to the following below. This way the day of the week will start off on Monday and end on Sunday. You will need to adjust the x and y coordinates of the days_mc to center the calendar correctly with the month.



loadDays();
startDay++;
if (startDay >= 8) {
startDay = 1;
row++;
}

Xoxo
January 1st, 2008, 06:27 PM
Thank you very much! Nice work!

bmilesp
February 12th, 2008, 11:30 PM
and has leap year as well- nice work

glosrfc
February 13th, 2008, 01:39 PM
and has leap year as well- nice work

Only certain leap years. Years that are divisible by 100 are not leap years unless they're also divisible by 400.

glosrfc
February 13th, 2008, 01:45 PM
daysNo = ((currentDate.getFullYear() % 4 == 0 && currentDate.getFullYear() % 100 != 0) || currentDate.getFullYear() % 400 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);

dbdvd7
March 21st, 2008, 03:23 PM
I added some functionality to this already useful calendar. With this you can scroll to future and past months/years. I also added a box_mc to the dates for enhanced visual effect. Im working on loading event data via XML to the calendar, if I get that done I will post it too...


ActionScript Code:

var monthsOfYear:Array = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var daysOfWeek:Array = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var daysOfMonths:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var currentDate:Date = new Date();
var nextDate:Date = new Date();
var lastDate:Date = new Date();
var myDate:Date = new Date();//provided by Andrei Firoiu
var month_mc:MovieClip = new MovieClip();
var day_mc:MovieClip;
var days_mc:MovieClip = new MovieClip();
var daysNo:Number;
var startDay:Number;
var i:Number;
var xmlLoader:URLLoader;
var holder:MovieClip;


xmlLoader = new URLLoader();
xmlLoader.load(new URLRequest("content.xml"));
xmlLoader.addEventListener(Event.COMPLETE, initCal);

function initCal(event:Event):void
{
calendar_mc.month_txt.text = monthsOfYear[currentDate.getMonth()] + " " + currentDate.fullYear;
myDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1)
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay = myDate.getDay();
var row:Number = 0;
days_mc = new MovieClip();

for (i = 1; i < daysNo+1; i++)
{
day_mc = new MovieClip();
day_mc.name = "days"+i;
days_mc.addChild(day_mc);
//provided by Andrei Firoiu\\
day_mc.x = startDay*73;
day_mc.y = (row+1)*73;
loadDays();
day_mc.addChildAt(new box(), 0);
startDay++;

if(startDay >= 7)
{
startDay = 0;
row++;
}
}

nextDate.setMonth(currentDate.month + 1);
lastDate.setMonth(currentDate.month - 1);

nextMonth_btn.addEventListener(MouseEvent.CLICK, nextMonth);
lastMonth_btn.addEventListener(MouseEvent.CLICK, lastMonth);


days_mc.x = -15;
days_mc.y = -20;
calendar_mc.addChild(days_mc);
}



function loadDays()
{
var dayLabel:String = i.toString();
holder = new MovieClip();

holder.name = dayLabel;
day_mc.addChild(holder);

var label_txt:TextField = new TextField();
label_txt.name = dayLabel+"_txt";
label_txt.autoSize = TextFieldAutoSize.LEFT;
label_txt.text = dayLabel;

var day_tf = new TextFormat();
day_tf.font = "Century Gothic";
day_tf.color = 0x959595;
day_tf.size = 12;
label_txt.setTextFormat(day_tf);

holder.addChild(label_txt);
}



function nextMonth(event:MouseEvent):void
{
calendar_mc.removeChild(days_mc);
nextMonth_btn.removeEventListener(MouseEvent.CLICK , nextMonth);

if(nextDate.month > 11)
{
nextDate.month = 0;
nextDate.setFullYear(currentDate.fullYear ++);

}

lastDate.setFullYear(nextDate.fullYear);
currentDate.setMonth(nextDate.month);
currentDate.setFullYear(nextDate.fullYear);
initCal(event);

}

function lastMonth(event:MouseEvent):void
{
calendar_mc.removeChild(days_mc);
lastMonth_btn.removeEventListener(MouseEvent.CLICK , lastMonth);

if(nextDate.month < 0)
{
lastDate.month = 11;
lastDate.setFullYear(currentDate.fullYear --);

}

nextDate.setFullYear(lastDate.fullYear);
currentDate.setMonth(lastDate.month);
currentDate.setFullYear(lastDate.fullYear);
initCal(event);
}

derhenno33
March 24th, 2008, 03:46 PM
Could anyone supply me with a .fla and .xml file of the above????

buildakicker
April 29th, 2008, 04:45 PM
I added some functionality to this already useful calendar. With this you can scroll to future and past months/years. I also added a box_mc to the dates for enhanced visual effect. Im working on loading event data via XML to the calendar, if I get that done I will post it too...


I see you are loading the XML content.xml into initCal, but what are you doing with it afterwards? I am trying to see what content you have in your file...

I am doing a similar thing.

Thanks.

AMaldonado
August 30th, 2008, 02:26 AM
I have a Question! rather than placing the number of days in an Array can the number of days in a month be calculated via actionscript 3.0? :puzzle:

mike27
September 10th, 2008, 07:41 PM
I have a Question! rather than placing the number of days in an Array can the number of days in a month be calculated via actionscript 3.0? :puzzle:

Yes, you can. For example:



var month:int = 8; //September

var firstDayOfMonth:Date = new Date(2008, month, 1);
var lastDayOfMonth:Date = new Date(2008, month + 1, 0);

var numDays:Number = lastDayOfMonth.getDate() as Number;

trace(numDays); // 30


By using "0" as the date, it will grab the last day of the previous month. That's why you add 1 to the month value you're looking for. Does that make sense?

pedromau
September 15th, 2008, 08:50 AM
It would be nice if we could see some examples... :)

spooks222
September 23rd, 2008, 12:26 AM
It would be nice if we could see some examples... :)
agreed, for some reason time and dates are very enjoyable to code.

Dan008
November 9th, 2008, 12:22 PM
i use a coffeecup web calendar but dont know how to load it in my flash site.....anyway anyone can post an example of this...thanks.....

vijay7002
November 20th, 2008, 05:30 AM
Hi,







Can u send fla and xml for calendra file on



vijay7002@gmail.com


thanks,

Vijay



I added some functionality to this already useful calendar. With this you can scroll to future and past months/years. I also added a box_mc to the dates for enhanced visual effect. Im working on loading event data via XML to the calendar, if I get that done I will post it too...


ActionScript Code:

var monthsOfYear:Array = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var daysOfWeek:Array = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var daysOfMonths:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var currentDate:Date = new Date();
var nextDate:Date = new Date();
var lastDate:Date = new Date();
var myDate:Date = new Date();//provided by Andrei Firoiu
var month_mc:MovieClip = new MovieClip();
var day_mc:MovieClip;
var days_mc:MovieClip = new MovieClip();
var daysNo:Number;
var startDay:Number;
var i:Number;
var xmlLoader:URLLoader;
var holder:MovieClip;


xmlLoader = new URLLoader();
xmlLoader.load(new URLRequest("content.xml"));
xmlLoader.addEventListener(Event.COMPLETE, initCal);

function initCal(event:Event):void
{
calendar_mc.month_txt.text = monthsOfYear[currentDate.getMonth()] + " " + currentDate.fullYear;
myDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1)
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay = myDate.getDay();
var row:Number = 0;
days_mc = new MovieClip();

for (i = 1; i < daysNo+1; i++)
{
day_mc = new MovieClip();
day_mc.name = "days"+i;
days_mc.addChild(day_mc);
//provided by Andrei Firoiu\\
day_mc.x = startDay*73;
day_mc.y = (row+1)*73;
loadDays();
day_mc.addChildAt(new box(), 0);
startDay++;

if(startDay >= 7)
{
startDay = 0;
row++;
}
}

nextDate.setMonth(currentDate.month + 1);
lastDate.setMonth(currentDate.month - 1);

nextMonth_btn.addEventListener(MouseEvent.CLICK, nextMonth);
lastMonth_btn.addEventListener(MouseEvent.CLICK, lastMonth);


days_mc.x = -15;
days_mc.y = -20;
calendar_mc.addChild(days_mc);
}



function loadDays()
{
var dayLabel:String = i.toString();
holder = new MovieClip();

holder.name = dayLabel;
day_mc.addChild(holder);

var label_txt:TextField = new TextField();
label_txt.name = dayLabel+"_txt";
label_txt.autoSize = TextFieldAutoSize.LEFT;
label_txt.text = dayLabel;

var day_tf = new TextFormat();
day_tf.font = "Century Gothic";
day_tf.color = 0x959595;
day_tf.size = 12;
label_txt.setTextFormat(day_tf);

holder.addChild(label_txt);
}



function nextMonth(event:MouseEvent):void
{
calendar_mc.removeChild(days_mc);
nextMonth_btn.removeEventListener(MouseEvent.CLICK , nextMonth);

if(nextDate.month > 11)
{
nextDate.month = 0;
nextDate.setFullYear(currentDate.fullYear ++);

}

lastDate.setFullYear(nextDate.fullYear);
currentDate.setMonth(nextDate.month);
currentDate.setFullYear(nextDate.fullYear);
initCal(event);

}

function lastMonth(event:MouseEvent):void
{
calendar_mc.removeChild(days_mc);
lastMonth_btn.removeEventListener(MouseEvent.CLICK , lastMonth);

if(nextDate.month < 0)
{
lastDate.month = 11;
lastDate.setFullYear(currentDate.fullYear --);

}

nextDate.setFullYear(lastDate.fullYear);
currentDate.setMonth(lastDate.month);
currentDate.setFullYear(lastDate.fullYear);
initCal(event);
}

maxpop
August 17th, 2009, 08:18 AM
You will need to change this section in the code to the following below. This way the day of the week will start off on Monday and end on Sunday. You will need to adjust the x and y coordinates of the days_mc to center the calendar correctly with the month.



loadDays();
startDay++;
if (startDay >= 8) {
startDay = 1;
row++;
}


hi.

How do i exactly correct days_mc ???

regards Maxpop

maxpop
August 17th, 2009, 08:27 AM
hi.

How do i exactly correct days_mc ???

regards Maxpop

SOLVED:

function publishDays() {
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay=myDate.getDay()-1;
if(startDay==-1)
{startDay = 6;
}




Maxpop

theothersun
August 30th, 2010, 02:15 PM
SOLVED:

function publishDays() {
daysNo = (currentDate.getFullYear()%4 == 0 && currentDate.getMonth() == 1 ? 29 : daysOfMonths[currentDate.getMonth()]);//provided by Andrei Firoiu
startDay=myDate.getDay()-1;
if(startDay==-1)
{startDay = 6;
}




Maxpop

Where's the FLA and XML file for this Calendar? I would like to use this on a project for http://www.theothersun.com , for a flash calendar picker.

kmae
July 8th, 2011, 11:56 PM
Sorry to bump this again, but I have combined all the lovely tips here and completed my calendar. I will be providing the files so everyone can be able to use this.

It imports events from XML and goes forward and backward in time. A little tool tip even comes up explaining more about the events on that day.

53946

I couldn't upload the .fla as it's too big, so sorry for the long post. Below is all the code. Hopefully you can figure out the movie clips from that.


stop();
////////////////////////////////////////////
// created by marcusJones - 11.19.2007 //
// based on the script by Andrei Firoiu. //
// Modified by Kirupa forum - //
// changes incorporated 6.29.11 //
// Modified by Andrew Abarca - 6.29.11 //
// do whatever you want with it. //
////////////////////////////////////////////
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import CalendarClasses.box;

var calendar:MovieClip = new MovieClip();
var monthsOfYear:Array = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var daysOfWeek:Array = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
//var daysOfMonths:Array = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var currentDate:Date = new Date();
var nextDate:Date = new Date();
var lastDate:Date = new Date();
var myDate:Date = new Date();
var month_mc:MovieClip = new MovieClip();
var day_mc:box;
var days_mc:MovieClip = new MovieClip();
var daysNo:Number;
var startDay:Number;
var xmlLoader:URLLoader;
var xmlData:XML = new XML();
var holder:MovieClip;
var day_tf:TextFormat = new TextFormat();
day_tf.font = "HelveticaNeue Condensed";
day_tf.color = 0x959595;
day_tf.size = 12;
var boldText:TextFormat = new TextFormat();
boldText.font = "HelveticaNeue Condensed";
boldText.color = 0x000000;
boldText.size = 14;
myToolTip.visible = false;
myToolTip.addEventListener(MouseEvent.CLICK, toolTipClick);

xmlLoader = new URLLoader();
xmlLoader.load(new URLRequest("calendar.xml"));
xmlLoader.addEventListener(Event.COMPLETE, initCal);

function daysOfMonth(year, month):Number {
return new Date(year, month + 1, 0).getDate() as Number;
}

function initCal(event:Event):void {
xmlData = new XML(event.target.data);
var eventList:XMLList = xmlData.Events.eventX;
var eventX = eventList;
calendar_mc.month_txt.text = monthsOfYear[currentDate.getMonth()] + " " + currentDate.fullYear;
myDate = new Date(currentDate.getFullYear(),currentDate.getMont h(),1);
daysNo = ((currentDate.getFullYear() % 400 == 0 && currentDate.getFullYear() % 100 != 0) || (currentDate.getFullYear() % 400 == 0 && currentDate.getMonth() == 1) ? 29 : daysOfMonth(currentDate.getFullYear(), currentDate.getMonth()));//provided by Andrei Firoiu, corrected
startDay = myDate.getDay();
var row:Number = 1;
days_mc = new MovieClip();

for (var i:Number = 1; i < daysNo + 1; i++) {
day_mc = new box();
day_mc.name = "days" + i;
day_mc.setDay(i);
day_mc.addEventListener(MouseEvent.CLICK, getDia);

for each (eventX in eventList) {
if (eventX.year == myDate.getFullYear() && eventX.month == myDate.getMonth() + 1 && eventX.dayX == i) {
day_mc.addEvent(eventX.description);
day_mc.addEvent(eventX.email);
loadDays(true, i);
} else if (!day_mc.hasEvent()){
day_mc.removeEvent();
loadDays(false, i);
}
}
days_mc.addChild(day_mc);
//provided by Andrei Firoiu\\
day_mc.x = startDay * 25;
day_mc.y = (row + 1) * 25;
//day_mc.addChildAt(dayBox, 0);
startDay++;

if (startDay >= 7) {
startDay = 0;
row++;
}
}

nextDate.setMonth(currentDate.month + 1);
lastDate.setMonth(currentDate.month - 1);

nextMonth_btn.addEventListener(MouseEvent.CLICK, nextMonth);
lastMonth_btn.addEventListener(MouseEvent.CLICK, lastMonth);


days_mc.x=-15;
days_mc.y=-20;
calendar_mc.addChild(days_mc);
}

function Calendar(__x:Number, __y:Number, date:String = null) {
if (date) {
currentDate=new Date(date);
} else {
currentDate = new Date();
}
myDate=new Date(currentDate.getFullYear(),currentDate.getMont h(),1);//provided by Andrei Firoiu

calendar.x=__x;
calendar.y=__y;
this.addChild(calendar);
}

function loadDays(bold:Boolean, day:Number) {
var dayLabel:String=day.toString();
holder = new MovieClip();
holder.name = dayLabel;
day_mc.addChild(holder);

var label_txt:TextField = new TextField();
label_txt.name = dayLabel+"_txt";
label_txt.autoSize = TextFieldAutoSize.LEFT;
label_txt.text = dayLabel;
label_txt.selectable = false;
label_txt.mouseEnabled = true;
label_txt.defaultTextFormat = day_tf;

if (bold) {
label_txt.setTextFormat(boldText);
} else {
label_txt.setTextFormat(day_tf);
}

holder.addChild(label_txt);
}

function getDia(evt:MouseEvent):void {
var dia = evt.currentTarget.getDayBox();
var mes = currentDate.getMonth() + 1;
var ano = currentDate.getFullYear();

if (evt.currentTarget.getEvents() != "") {
myToolTip.toolTipText.text = "The following events are today: " + mes + "/" + dia + "/" + ano + "\n";
var myEvents:Array = evt.currentTarget.getEvents();
for (var j:int = 0; j < myEvents.length; j += 2) {
trace(myEvents[j+1]);
var myLink:String = myEvents[j+1];
var myLinkName:String = myLink.substr(8,myLink.indexOf(".")-8).charAt(0).toUpperCase() + myLink.substr(9,myLink.indexOf(".")-9);

myToolTip.toolTipText.appendText(myEvents[j] + "\n");
myToolTip.toolTipText.htmlText += "Email: <a href='" + myLink + "'>" + myLinkName + "</a>" + "\n";
}
myToolTip.toolTipText.addEventListener(TextEvent.L INK, function():void {
navigateToURL(new URLRequest(myLink));});
myToolTip.visible = true;
}
}

function toolTipClick(evt:MouseEvent):void {
if (evt.target.name == "closeBtn") {
myToolTip.visible = false;
}
}

function nextMonth(event:MouseEvent):void {
calendar_mc.removeChild(days_mc);
nextMonth_btn.removeEventListener(MouseEvent.CLICK , nextMonth);

if (nextDate.month > 11) {
nextDate.month = 0;
nextDate.setFullYear(currentDate.fullYear++);
}

lastDate.setFullYear(nextDate.fullYear);
currentDate.setMonth(nextDate.month);
currentDate.setFullYear(nextDate.fullYear);
xmlLoader.load(new URLRequest("calendar.xml"));
}

function lastMonth(event:MouseEvent):void {
calendar_mc.removeChild(days_mc);
lastMonth_btn.removeEventListener(MouseEvent.CLICK , lastMonth);

if (nextDate.month<0) {
lastDate.month=11;
lastDate.setFullYear(currentDate.fullYear --);
}
nextDate.setFullYear(lastDate.fullYear);
currentDate.setMonth(lastDate.month);
currentDate.setFullYear(lastDate.fullYear);
xmlLoader.load(new URLRequest("calendar.xml"));
}


package CalendarClasses {
import flash.display.MovieClip;

public class box extends MovieClip {
var hasAnEvent:Boolean = false;
var currentDay:Number;
var events:Array = new Array();

public function box() {
super();
}

public function returnBox():MovieClip {
return this;
}

public function getDayBox():Number {
return currentDay;
}

public function setDay(theDay:Number) {
currentDay = theDay;
}

public function addEvent(anEvent:String):void {
hasAnEvent = true;
events.push(anEvent);
}

public function getEvents():Array {
return events;
}

public function removeEvent():void {
hasAnEvent = false;
events.pop();
}

public function hasEvent():Boolean {
return hasAnEvent;
}
}
}

dobby
September 23rd, 2011, 04:55 PM
Hi,
I'm new to flash and can't figure out how to make this work.

I have saved the code in two files (Calendar.as and CalendarClasses.as) in the same folder as the .fla file.

But I don't know what to do to make this calendar working. Is it on a "TextInput" ?

Please help me :)

besmedia
September 26th, 2011, 05:40 AM
thanks good job