Class: Chain

ある関数の処理が完了してから次の関数を開始する、といった具合に関数を順番に実行するときに役立つクラスです。 このメソッドはどんなクラスにでもClass:implementを用いて実装することができ、FxRequestにはすでに実装されています。 例えばFxにおいては、複雑なカスタムアニメーションを作るのに使われています。

Chainメソッド: constructor

構文:

新しいクラスの場合:

var MyClass = new Class({ Implements: Chain });

既存のクラスの場合:

MyClass.implement(Chain);

単一の利用:

var myChain = new Chain;

例:

    var Todo = new Class({
        Implements: Chain,
        initialize: function(){

            this.chain.apply(this, arguments);
        }
    });

    var myTodoList = new Todo(
        function(){ alert('get groceries'); },
        function(){ alert('go workout'); },
        function(){ alert('code mootools documentation until eyes close involuntarily'); },
        function(){ alert('sleep'); }

    );

参考情報:

Chainメソッド: chain

Chainインスタンスの関数呼び出し命令の最後に関数を付け加えます。

構文:

myClass.chain(fn[, fn2[, fn3[, ...]]]);

引数:

  1. fn - (関数 または 配列) 関数呼び出し命令のに付け加えたい関数(または関数の配列)。関数も、関数の配列も、複数渡すことができます。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。chainメソッドを使って、再び関数を付け加えることもできます。

例:

//Fx.TweenはFxクラスを継承しているため、すでにChainクラスを実装しています。
var myFx = new Fx.Tween('myElement', 'opacity');
myFx.start(1,0).chain(

    //'this'が呼び出し側のオブジェクトを参照していることに注意(この場合は、myFxオブジェクト
    function(){ this.start(0,1); },
    function(){ this.start(1,0); },
    function(){ this.start(0,1); }

); //フェイードアウト、フェードインを二回繰り返します。

参考情報:

Chainメソッド: callChain

Chainインスタンスの最初の関数を削除し、実行します。次の関数が配列の最初になります。

構文:

myClass.callChain([any arguments]);

引数:

  1. 渡された引数は"次"の関数に渡されます。

戻り値:

  • (いろいろ) "次"の関数の戻り値があればそれを返し、ない場合はfalseを返します。

例:

var myChain = new Chain();
myChain.chain(
    function(){ alert('do dishes'); },
    function(){ alert('put away clean dishes'); }

);
myChain.callChain(); //アラート 'do dishes'.
myChain.callChain(); //アラート 'put away clean dishes'.

Chainメソッド: clearChain

Chainインスタンスの処理命令を空っぽにします。

構文:

myClass.clearChain();

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

例:

var myFx = Fx.Tween('myElement', 'color'); //Fx.TweenはFxを継承しているため、Chainの機能を実装しています。

myFx.chain(function(){ while(true) alert("D'oh!"); }); //アラートの無限ループ。

myFx.clearChain(); //アラートの無限ループが始まる前に、それをキャンセル。

参考情報:

Class: Events

便利なクラスです。このクラスのメソッドはどんなクラスでもClass:implementによって実装できます。 例えばFxにおいて、このクラスは'complete'、 'start'、 'cancel'のようなFxイベントに対していくつでも関数を追加できるようにするために使われています。 Eventsを実装したクラスのイベントは、オプションかaddEventで追加しなくてはならず、'.options.onEventName'で直接追加してはいけません。

構文:

新しいクラスの場合:

var MyClass = new Class({ Implements: Events });

既存のクラスの場合:

MyClass.implement(Events);

Implements:

  • このクラスは他のクラスに新しい機能を追加するために、インプリメントすることができます。
  • EventsはOptionsクラスと協調するように設計されています。オプションプロパティが'on'で始まり、その次が大文字で始まると、イベントとして登録されます(e.g. 'onComplete'は'complete'イベントになります)。

例:

var Widget = new Class({

    Implements: Events,
    initialize: function(element){
        // ...
    },
    complete: function(){

        this.fireEvent('complete');
    }
});

var myWidget = new Widget();
myWidget.addEvent('complete', myFunction);

注意:

  • 'on'で始まるイベントはまだ全メソッドでサポートされており、'on'のない形に変換されて処理されます (e.g. 'onComplete'は 'complete'になります)。

参考情報:

Eventsメソッド: addEvent

クラスインスタンスのイベント一覧にイベントを加えます。

構文:

myClass.addEvent(type, fn[, internal]);

引数:

  1. type - (文字列) イベントのタイプ (e.g. 'complete')。
  2. fn - (関数) 実行する関数。
  3. internal - (真偽値, オプション) 関数のinternalプロパティをセットするならtrue。internalプロパティは削除されないようにするために使われます。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

例:

var myFx = new Fx.Tween('element', 'opacity');
myFx.addEvent('start', myStartFunction);

Eventsメソッド: addEvents

addEventと同じですが、一度に複数のイベントを追加できます。

構文:

myClass.addEvents(events);

引数:

  1. events - (オブジェクト) キー=値のペアを持つオブジェクト。キーがイベント名(e.g. 'start')で、値はイベント発生時に実行したい関数です。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

例:

var myFx = new Fx.Tween('element', 'opacity');
myFx.addEvents({

    'start': myStartFunction,
    'complete': function() {
        alert('Done.');
    }

});

Eventsメソッド: fireEvent

クラスインスタンス内の特定のタイプのイベントをすべて発生させます。

構文:

myClass.fireEvent(type[, args[, delay]]);

引数:

  1. type - (文字列) イベントのタイプ(e.g. 'complete')。
  2. args - (いろいろ, オプション) 関数に渡す引数。複数の引数を渡す場合は、配列にする必要があります。
  3. delay - (, オプション) イベント発生から関数実行までの待機ミリ秒数(初期値=0)。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

例:

var Widget = new Class({

    Implements: Events,
    initialize: function(arg1, arg2){
        //...
        this.fireEvent("initialize", [arg1, arg2], 50);
    }

});

Eventsメソッド: removeEvent

クラスインスタンスからイベントを削除します。

構文:

myClass.removeEvent(type, fn);

引数:

  1. type - (文字列) イベントのタイプ (e.g. 'complete')。
  2. fn - (関数) 取り除きたい関数。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

注意点:

  • 関数のinternalプロパティをtrueにセットしていた場合は削除されません。

Eventsメソッド: removeEvents

クラスインスタンスから指定したタイプのイベントをすべて削除します。タイプがしていされていなければ、すべてのイベントが削除されます。

構文:

myClass.removeEvents([events]);

引数:

  1. events - (オプション) 渡されていなければすべてのタイプのイベントが削除されます。
    • (文字列) イベント名(e.g. 'success')。このタイプのイベントがすべて削除されます。
    • (オブジェクト) イベントタイプと関数のペアを持つオブジェクト。addEventsに渡されるような形式。

戻り値:

  • (オブジェクト) 新しいクラスインスタンス。

例:

var myFx = new Fx.Tween('myElement', 'opacity');
myFx.removeEvents('complete');

注意点:

  • removeEventsは内部イベントを削除しません。Events:removeEventを見てください。

Class: Options

役に立つクラスです。このメソッドはClass:implementを用いて、どんなにクラスでも実装できます。 クラスインスタンスのオプション設定を自動化できます。 クラスイベントも追加でき、その場合はオプションのプロパティを'on'ではじめ、次の文字を大文字にします (e.g. 'onComplete'は'complete'イベントを追加します)。

構文:

新しいクラスの場合:

var MyClass = new Class({Implements: Options});

既存のクラスの場合:

MyClass.implement(Options);

Optionsメソッド: setOptions

クラスのオプションに渡されたオプションを追加します。

構文:

myClass.setOptions([options]);

引数:

  1. options - (オブジェクト, オプション) 初期値に追加するためのユーザ定義オプション。

戻り値:

  • (オブジェクト) 現在のクラスインスタンス。

例:

var Widget = new Class({
    Implements: Options,
    options: {
        color: '#fff',
        size: {

            width: 100,
            height: 100
        }
    },
    initialize: function(options){

        this.setOptions(options);
    }
});

var myWidget = new Widget({

    color: '#f00',
    size: {
        width: 200
    }
});

//myWidget.optionsの現在値: {color: #f00, size: {width: 200, height: 100}}

注意点:

  • クラスのオプション初期値に依存して、オプションのプロパティと値は定義されます。
  • もしもクラスがEventsクラスを実装していたら、'on'ではじまり次の文字が大文字である(e.g. 'onComplete')すべてのオプションプロパティはイベントオプションになるため、値に関数を取ることを前提とします。

このドキュメントはMooToolsのドキュメントを元に高橋文樹が翻訳(ちょっと改変)しました。
本家と同じく、Attribution-NonCommercial-ShareAlike 3.0ライセンスで公表されています。

トップに戻る