0

ここでmootoolsのカウントダウンを取得しましたが、機能していないようです。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を使用しています

4

2 に答える 2

1

標準メソッドを使用するようにクラスコードを変更できます。

.registerCallbackタイマーを起動する関数のようです。setInterval。明らか.stopにタイマーを停止します。clearInterval
クラスが行うように見える唯一のことはPeriodicalExecuter、インスタンス化時に与えた引数をsetInterval毎回呼び出しに渡すことです。

それはあなた自身でそれを実装するのに十分な情報です:)

于 2013-01-04T10:23:24.353 に答える
0

https://code.google.com/p/pspygear/source/browse/trunk/trunk/PspyGear/html/osgata/scripts/PeriodicalExecuter.js?r=114
最後に、上記のサイトでjsファイルを見つけました。

ところで、@Reanimationに感謝します。
ソースコードはあなたの言うことと似ています

于 2013-01-05T03:26:06.813 に答える