Mootools Counter倒计时不起作用

时间:2013-01-04 04:32:02

标签: javascript mootools

我有一个mootools倒计时here,但看起来不行 我在CountDown.js第36行(Uncaught ReferenceError: PeriodicalExecuter is not defined

中收到错误消息this.timer = new PeriodicalExecuter(this.update.bind(this), (this.options.frequency || 1000) / 1000);

班级PeriodicalExecuter似乎不包含在mootools中。希望有人拥有PeriodicalExecuter的代码或知道我在哪里可以找到它。

课程PeriodicalExecuter至少应包含作品stop()registerCallback()

以下是CountDown.js的代码供您参考

/*
---
script: CountDown.js
license: MIT-style license.
description: CountDown - a mootools countdown implementation.
copyright: Copyright (c) 2008 Thierry Bela
authors: [Thierry Bela]

requires: 
  core:1.2.3: 
  - Events
  - Options
provides: [CountDown]
...
*/

var CountDown = new Class({

    /* 

        options: {

            onChange: $empty,
            onComplete: $empty,
            date: null,
            frequency: 1000 //define the update frequency (in ms), default to 1000
        },

        */
    Implements: [Options, Events],
    initialize: function (options) {

        this.setOptions(options);
        if(!this.options.date instanceof Date) this.options.date = new Date(this.options.date);

        this.timer = new PeriodicalExecuter(this.update.bind(this), (this.options.frequency || 1000) / 1000);
    },
    stop: function () {

        this.timer.stop();          
        return this
    },
    start: function () {

        this.timer.registerCallback();          
        return this
    },
    update: function () {

        var millis = Math.max(0, this.options.date.getTime() - new Date().getTime()),
        time = Math.floor(millis / 1000),
        stop = time == 0,
        countdown = {

            days: Math.floor(time / (60 * 60 * 24)), 
            time: time,
            millis: millis
        };

        time %= (60 * 60 * 24);

        countdown.hours = Math.floor(time / (60 * 60));
        time %= (60 * 60);
        countdown.minutes = Math.floor(time / 60);
        countdown.second = time % 60;

        this.fireEvent('onChange', countdown);

        if(stop) {

            this.timer.stop();
            this.fireEvent('onComplete');
        }
    }
});

修改
我正在使用Mootools版本1.4.5兼容性

2 个答案:

答案 0 :(得分:1)

您可以更改类代码以使用标准方法。

看起来.registerCallback只是一个启动计时器的函数,即。 setInterval。 显然.stop会停止计时器,即。 clearInterval
PeriodicalExecuter类似乎唯一要做的就是每次都将实例化时给出的参数传递给setInterval调用。

这是关于自己实施它的足够信息:)

答案 1 :(得分:0)

https://code.google.com/p/pspygear/source/browse/trunk/trunk/PspyGear/html/osgata/scripts/PeriodicalExecuter.js?r=114
最后,我在上面的网站找到了js文件

顺便说一句,谢谢@Reanimation 源代码与您所说的相似