2012-09-08 94 views
0

我有一個動作腳本3代碼和一個大問題:我的日曆不顯示所有月份的日子,我無法弄清楚爲什麼。例如9月份有30天,但我的日曆只顯示26個。所以任何幫助都會很棒!我的代碼:日曆Flash動作腳本3

var daysMonth:int;//variable that holds a value of all days in the current month 
var daysNumber:int;//counter for days 
var weeks:Number;//variables that hold weeks of the date 
var days:Number;//variables that hold current day 
var year:Number;//variables that hold current year 
var month:Number;//variables that hold current month 
var firstDayOfMonth:Number;// variable that holds the position of first day in current month 

var shapeButtonWidth:int = 35; 
var shapeButtonHeight:int = 35; 
var marginBetweenButtons:int = 2; 
var calendarBackgroundColor:uint = 0x1e1e20; 
var calendarNumberHolderColor:uint = 0x101010; 
var calendarNumberTextColor:uint = 0xEAEAEA; 
var dayHighlightBorderColor:uint = 0x893827; 

var nowDate:Date = new Date();//get current date 
days = nowDate.getDate() ;//get current day 
month = nowDate.getMonth() ;//get current month 
year = nowDate.getFullYear() ;//get current year 

var firstDay:Date = new Date(year, month, 1); 
firstDayOfMonth = firstDay.getDay(); 

var numberOfDays:Date = new Date(year,month , 0); 
daysMonth = numberOfDays.getDate(); 

weeks = daysMonth/7; 

if (weeks > 2)//making 5 lines in some cases when month starts with the end of the week 
    weeks = 6; 

for (var i:int = 1; i <= weeks; i++) { 

for (var j:int = 1; j <= 7 ; j++) { 

    daysNumber++; 
    if (firstDayOfMonth == 0) 
     firstDayOfMonth = 7; 

    var calendarBackground:Shape = new Shape(); 
    calendarBackground.graphics.lineStyle(); 
    calendarBackground.graphics.beginFill(calendarBackgroundColor,1); 
    calendarBackground.graphics.drawRoundRect(0,0,shapeButtonWidth * 8, shapeButtonHeight * 6,8); 
    calendarBackground.graphics.endFill(); 
    calendarBackground.x = stage.stageWidth/2 - calendarBackground.width/2; 
    calendarBackground.y = stage.stageHeight/2 - calendarBackground.height/2; 
    this.addChild(calendarBackground); 
    setChildIndex(calendarBackground, 0);//set the background to have the lowest index 

    if (daysNumber <= daysMonth){ 
     if (daysNumber >= firstDayOfMonth){ 
      var dayC:Shape = new Shape(); //variable of custom class 
      dayC.graphics.lineStyle(); 
      dayC.graphics.beginFill(calendarNumberHolderColor,1); 
      dayC.graphics.drawRoundRect(0,0,shapeButtonWidth, shapeButtonHeight,8); 
      dayC.graphics.endFill(); 
      this.addChild(dayC); 

      var calendarNumbers:TextField = new TextField(); 
      calendarNumbers.textColor = calendarNumberTextColor; 

      var myFormat:TextFormat = new TextFormat(); 
      myFormat.size = 16; 
      calendarNumbers.defaultTextFormat = myFormat; 
      this.addChild(calendarNumbers); 

      calendarNumbers.text = String(daysNumber - firstDayOfMonth + 1); 



      dayC.x = calendarNumbers.x = (dayC.width + marginBetweenButtons) * (j - 1) + calendarBackground.x + 12; 
      dayC.y = calendarNumbers.y = (dayC.height + marginBetweenButtons) * (i-1) + dayC.height/2 + calendarBackground.y - 5; 

      if (daysNumber < 11) 
       calendarNumbers.x = dayC.x + 11; 
      else 
       calendarNumbers.x = dayC.x + 7; 
      calendarNumbers.y = dayC.y + 5; 

      if (calendarNumbers.text == String(days)){ 
       var borderDay:Shape = new Shape();//here we draw border around current day 
       borderDay.graphics.lineStyle(4,dayHighlightBorderColor);//width and color of border around current day 
       borderDay.graphics.drawRoundRect(dayC.x+1, dayC.y+1, shapeButtonWidth - 3,shapeButtonWidth - 3,8); 
       borderDay.graphics.endFill(); 
       this.addChild(borderDay);//adding border to stage 

      } 
     } 
    } 

} 

} 

謝謝!

回答

0

您正在通過「daysNumber」檢查邊界,但顯示「days」,因此您顯示的第31個單元格包含第26個日期,前5個單元格不顯示。檢查「days」是否在1..daysMonth之內,而不是「daysNumber」。