倒计时“gotoAndPlay”AS3

时间:2010-02-24 21:40:29

标签: flash actionscript-3

我的计时器从 60倒计时到。我希望我的电影能够在零点数进入下一帧。如何从第1-2帧开始?我需要找到合适的运算符和值,但我迷失在字符串中。

我在做什么
如果(某事是<> == true false);
的gotoAndPlay(2);

stop();
//
var timer:Timer = new Timer(100, 300);
timer.addEventListener(TimerEvent.TIMER, countdown);
timer.start();
function countdown(event:TimerEvent) {
    var totalSecondsLeft:Number = 60 - timer.currentCount;
    myText.text = timeFormat(totalSecondsLeft);
}

function timeFormat(seconds:int):String {
  //  var minutes:int;
   // var sMinutes:String;
    var sSeconds:String;
    if(seconds > 59) {
    //    minutes = Math.floor(seconds / 60);
    //    sMinutes = String(minutes);
        sSeconds = String(seconds % 60);
    } else {
   //     sMinutes = "";
        sSeconds = String(seconds);
    }
    if(sSeconds.length == 1) {
        sSeconds = "0" + sSeconds;

            //###################################
            //}
            //if(bla bla bla?) {
            //gotoAndPlay(2);
            //###################################
    }
    return sSeconds;//return sMinutes + ":" + sSeconds;
}

我试过这个 “没什么”

stop();
var timer:Timer = new Timer(1000); // delay = time between ticks in milliseconds
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();

function onTimer($evt:TimerEvent):void { 
    watch.hand.rotation = 30 + timer.currentCount;//tick 5 
} 

//function startAgain($evt:TimerEvent):void { 
//timer.reset(); 
//timer.start(); 
//} 

function onTimerComplete(e:TimerEvent):void
{

    // remove listener
    timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
    // advance playhead to frame 2
    gotoAndPlay(2);
}

我正在做这样的几个实验来理解条件。我需要构建与预加载器类似的对象。

alt text http://www.ashcraftband.com/myspace/videodnd/board1.jpg

3 个答案:

答案 0 :(得分:0)

如果你的问题是关于在60个滴答之后将播放头从第1帧推进到第2帧,那么我建议你监听TimerEvent.TIMER_COMPLETE事件。例如,

var timer:Timer = new Timer(delay, 60); // delay = time between ticks in milliseconds
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();

function onTimerComplete(e:TimerEvent):void
{
    // remove listener
    timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);

    // advance playhead to frame 2
    gotoAndPlay(2);
}

至于你关于条件的问题......你会问,“我怎样才能从第1-2帧开始?”那么,为了推进一个框架,条件需要什么?

请尝试提出简明扼要的问题。如果你只是想绕过条件,那么我建议你搜索谷歌和这个网站,因为那里有很多好的信息。祝你好运!

====编辑====

你在2天前添加的代码(即我试过这个“没什么”......)不应该做任何事情:)

以下代码行实例化一个Timer对象,该对象将每1000毫秒永远

var timer:Timer = new Timer(1000);

这就是为什么你的onTimerComplete(e:TimerEvent)处理程序永远不会被调用的原因。如果你想让它最终停止滴答,比如在5秒之后,你会想要使用以下代码段代替你的代码:

var timer:Timer = new Timer(1000, 5); // timer will tick every second (1000 milliseconds) for 5 seconds

您也永远不会注册TimerEvent.TIMER事件处理程序。这就是你的onTimer($evt:TimerEvent)处理程序永远不会被调用的原因。如果要捕获该事件,则需要注册处理程序,如下所示:

timer.addEventListener(TimerEvent.TIMER, onTimer);

如果添加该侦听器,请确保以onTimerComplete(e:TimerEvent)处理程序中删除TimerEvent.TIMER_COMPLETE处理程序的方式将其删除。

希望这会有所帮助。祝你好运!

答案 1 :(得分:0)

或者,您可以使用setTimeout函数:

function goToTwo(e) {
   gotoAndPlay(2);
}

setTimeout(goToTwo, 60*1000);

答案 2 :(得分:0)

你说你想转到下一帧。我不确定你在寻找什么,但它是nextFrame()函数吗?还是gotoAndStop()?

你可以尝试重新解释一下你在这里发生的事情吗?