0

私が取り組んでいる avatargenerator のコードには、キャラクターの鼻を小さくしたり大きくしたりする 2 つのボタン イベント ハンドラー メソッドがあります。それらには、私が修正したい同じコードがほとんど含まれています(つまり、乾燥しています)

さらに下を見ると、イベント ハンドラー メソッドからロジックを新しい関数にどのように削除したかがわかりますが、この関数内の実際のロジックを変更する方法がわからないため、ノーズを小さくまたは大きくしています。したがって、私が基本的に望んでいるのは、鼻を小さくするか大きくするためにイベントハンドラーメソッドから呼び出される関数に応じて、- を + または他の方法に変更できるようにすることです。

助言がありますか?

現在のコード:

smallerNoseBtn.on('click', function() {

    var nose = AvGen.noses.nose1;

    if (nose.size >= 0.3) {
        nose.x += 3, nose.y += 3;
        nose.size = nose.size -= 0.1;
        nose.size = Math.round(nose.size * 10) / 10;

        nose.noseObj.transform('S' + nose.size + ', ' + nose.size + ', 0, 0, T' + nose.x + ', ' + nose.y);
    }
});

biggerNoseBtn.on('click', function() {

    var nose = AvGen.noses.nose1;

    if (nose.size <= 1.8) {
        nose.x -= 3, nose.y -= 3;
        nose.size = nose.size += 0.1;
        nose.size = Math.round(nose.size * 10) / 10;

        nose.noseObj.transform('S' + nose.size + ', ' + nose.size + ', 0, 0, T' + nose.x + ', ' + nose.y);
    }

DRY を取り除く:

smallerNoseBtn.on('click', function() {
    var nose = AvGen.noses.nose1;

    if (nose.size >= 0.3) {
        changeNoseSize(nose, 'smaller');
    }
});

biggerNoseBtn.on('click', function() {
    var nose = AvGen.noses.nose1;

    if (nose.size <= 1.8) {
        changeNoseSize(nose, 'bigger');
    }
});


// The question is what to write in the functions to make it possible to use the variable
// changeSize (which will contain of either 'bigger' or 'smaller')?  

function changeNoseSize(nose, changeSize) {
    nose.x -= 3, nose.y -= 3;
    nose.size = nose.size += 0.1;
    nose.size = Math.round(nose.size * 10) / 10;

    nose.noseObj.transform('S' + nose.size + ', ' + nose.size + ', 0, 0, T' + nose.x + ', ' + nose.y);
}
4

4 に答える 4