Actionscript 3 将起始帧设置为当前月份

Actionscript 3 将起始帧设置为当前月份,actionscript-3,flash,date,Actionscript 3,Flash,Date,我正在制作一个flash日历,但它是针对学年的,所以第一帧是今年的8月,最后一帧是明年的7月。这样,8月是第1帧,9月是第2帧,直到7月是第12帧。也就是说,我编写了一些代码,使日历从当前月份的框架开始。所以八月的.getMonth()返回值是7,然后减去6等于第1帧或八月 一切都很好,但由于某种原因,它在12月被卡住了。12月之后的任何月份(即1月至7月),它只在12月开放。即使我的trace()显示了正确的帧号,它也会这样做 是我遗漏了什么,还是我完全错了 stop() //Start at

我正在制作一个flash日历,但它是针对学年的,所以第一帧是今年的8月,最后一帧是明年的7月。这样,8月是第1帧,9月是第2帧,直到7月是第12帧。也就是说,我编写了一些代码,使日历从当前月份的框架开始。所以八月的
.getMonth()
返回值是7,然后减去6等于第1帧或八月

一切都很好,但由于某种原因,它在12月被卡住了。12月之后的任何月份(即1月至7月),它只在12月开放。即使我的
trace()
显示了正确的帧号,它也会这样做

是我遗漏了什么,还是我完全错了

stop()
//Start at current month
var done:Boolean;
if (!done) {
    //Code in here only runs once
    var date:Date = new Date();
    var which_month:int = date.getMonth();

    if(which_month < 6) {
        gotoAndStop((which_month + 6));
        trace((which_month + 6));
    } else {
        gotoAndStop((which_month - 6));
    }

    done=true;
}
stop()
//从当月开始
var-done:布尔型;
如果(!完成){
//这里的代码只运行一次
变量日期:日期=新日期();
var which_month:int=date.getMonth();
如果(哪个月<6){
gotoAndStop((哪个月+6));
跟踪((哪个月+6));
}否则{
gotoAndStop((哪个月-6));
}
完成=正确;
}

这似乎很管用

stop();
//Start at current month
var done:Boolean;
if (!done) {
    //Code in here only runs once
    var date:Date = new Date();
    var which_month:int = date.getMonth();
        which_month -= 7;
    if(which_month < 0)
    {
        which_month += 12;
    }

    gotoAndStop((which_month + 1));


    done=true;
}
stop();
//从当月开始
var-done:布尔型;
如果(!完成){
//这里的代码只运行一次
变量日期:日期=新日期();
var which_month:int=date.getMonth();
哪个月-=7;
如果(哪个月<0)
{
哪个月+=12;
}
gotoAndStop((哪个月+1));
完成=正确;
}
数学可以简单一点,但我的大脑不喜欢把月份想象成零指数

试试这个:

stop()
//Start at current month
var done:Boolean;
if (!done) {
    //Code in here only runs once
    var date:Date = new Date();
    var which_month:int = date.getMonth();
    which_month += which_month > 7 ? -7 : 6
    gotoAndStop(which_month);
    done=true;
}
试着这样做:

stop();

var done:Boolean;

if (!done) {
    var date:Date = new Date();
    gotoAndStop(((date.getMonth()+6)%12) + 1);
    done=true;
}

你的代码在哪里?它是一个单独的类还是这段代码在每一帧上?它在第一帧上,因为它只应该运行一次。我认为ZuzEL的答案比我的好得多。谢谢,但我认为loxxy使用%运算符得到了最好的结果,我在打印我的答案时没有得到它谢谢,由于所有的答案都解决了这个问题,尽管方式不同&小故障是第一个,OP做了正确的事情……:)。我尽量避免%和/或因为我听说它很贵,我应该重新考虑一下吗?所有的答案都是“对的”,我觉得既然这一个是第一个,我就应该选择它。此外,我也不喜欢以零指数形式思考月份。