Flash AS3中的计时器计数

时间:2012-12-28 07:12:18

标签: actionscript-3 flash timer

我有2部电影(swf)必须从一个文件中运行。

它们都有单独的预加载器。

我加载第一部电影并在播放时停止播放。 为播放第二部电影,我正在使用计时器。 定时器必须运行直到它到期才能移动到第二部电影。

这是代码。

var today:Date = new Date();

var currentTime = today.getTime();

var targetTime =  currentTime + 20000;


this.onEnterFrame = function()
{
//Determines how much time is left.  Note: Leaves time in milliseconds
var timeLeft = targetTime - currentTime;

if(timeLeft<0)
{

    gotoAndPlay(3);
    }

}

它发出警告 - 场景1,图层'操作',第2帧,第15行警告:1090:迁移问题:在ActionScript 3.0中,Flash Player不会在运行时自动触发onEnterFrame。您必须首先使用addEventListener('enterFrame',callback_handler)为事件注册此处理程序。

如何处理?

1 个答案:

答案 0 :(得分:0)

这是ActionScript 3,因此AS2风格的on-functions不再起作用。而不是使用它:

this.onEnterFrame = function () {
    // code...
}

使用此:

this.addEventListener(Event.ENTER_FRAME, function (e:Event) {
    // code...
});

在AS3中,新的事件模型取代了很多AS2自动调用的函数,结果证明这是一件好事。一旦你习惯了新的语法,它就比AS2提供的任何东西都强大得多。

即使这样可以解决错误,您的代码仍然无法执行任何操作。代码本身存在多个问题,但实际上,无论如何,你不应该以这种方式接近它。改为使用Timer类!

var timer:Timer = new Timer(20000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (e:TimerEvent) {
    gotoAndPlay(3);
});
timer.start();