このアニメーションがより複雑になるにつれて、各コールバックで使用できるようにパラメーターを追加し続けます。現在合計6つ。
たとえば、メッセージが表示されている間は入力ボックスを無効にしたいので、さらに別の要素を追加する必要があります-in_element;
呼び出し:
Mo.C.movePane( cover_element, pane_element, 0, 0, 0, 'begin' );
関数:
movePane: function( cover_element, pane_element, start, end, index, state ) {
if( ( state === 'begin' ) ) {
start = parseInt( window.getComputedStyle( pane_element, null ).getPropertyValue("top"), 10 );
end = start + 40;
index = start;
state = 'down';
cover_element.style.display = 'inline';
Mo.C.movePane(cover_element, pane_element, start, end, index, 'down' );
}
if( ( state === 'down' ) && ( index < end ) ) {
index += 1;
pane_element.style.top = ( index ) + 'px';
setTimeout( function( ){ Mo.C.movePane(cover_element, pane_element, start, end, index, state ); }, 1 );
}
else if( ( state === 'down' ) && index === end ) {
state = 'up';
setTimeout( function( ){ Mo.C.movePane(cover_element, pane_element, start, end, index, state ); }, 2000 );
}
else if( ( state === 'up' ) && ( index > start ) ) {
index -= 1;
pane_element.style.top = ( index ) + 'px';
setTimeout( function( ){ Mo.C.movePane(cover_element, pane_element, start, end, index, state ); }, 1 );
}
else if( ( state === 'up' ) && ( index === start ) ) {
cover_element.style.display = 'none';
// signup_pass_input.addEventListener( "keypress", Mo.UserNew.enter, false );
}
}
};
可能な解決策
- すべてをと呼ばれる単一のオブジェクトにラップし、
object_all = {}
この1つの変数だけを渡します。 - 何らかの方法で機能を分割します-開始条件と終了条件を引き出して機能を分離する可能性があります
- 関数パラメーターからオブジェクトプロパティ(静的)に移動して、必要な変数を永続的に維持します
- ?