0

これは少し厄介ですが、静的変数の配列が必要です。関数が呼び出されるたびに、これらの変数にアクセスする必要があります。基本的に、現在経過時間と呼ばれている単一の変数によって「制御」されるエフェクト関数があります。

ただし、同じ要素でエフェクトを実行しないようにするために、関数に渡される要素ごとに経過時間が必要です...(私のフェード関数の場合、これによりちらつき効果が発生します)。

を使用しelement.idて変数に名前を付けたいと思います。

連想配列は実際には連想配列ではないので、ここでは使用しないでくださいという投稿を読んだばかりです。

以下は、更新する必要がある現在の関数です。

/**
 *    Effects
 */

var Effects = function( element ) 
{
    this.element = element;
};

Effects.prototype.fade = function( direction, max_time ) 
{
    Effects.elapsed = 0;
/*
    Effects.arrayHold = [];
    Effects.arrayHold.push( this.element.id );
*/
    var persist_element = this.element;
    function next() 
    {
        Effects.elapsed += 10;
        if ( direction === 'up' )
        {
            persist_element.style.opacity = Effects.elapsed / max_time;
        }
        else if ( direction === 'down' )
        {
            persist_element.style.opacity = ( max_time - Effects.elapsed ) / max_time;
        }
        if ( Effects.elapsed <= max_time ) 
        {
            setTimeout( next, 10 );
        }
    }
    next();
    return true;
};
4

1 に答える 1

1

配列の代わりにオブジェクトを使用するだけです

于 2012-04-07T21:46:21.083 に答える