2
respostas

Meu sprite.reset() dá undefined

Segue o código.

function createSprite(selector) {

    var $elemento = $(selector);

    var frames = [
        'frame1', 'frame2', 'frame3', 'frame4', 'frame5',
        'frame6', 'frame7', 'frame8', 'frame9'
    ];

    var atual = 0;

    var last = frames.length -1; 

    $elemento.addClass(frames[atual]);  

    function moveFrame (from, to) {

        $elemento.removeClass(from).addClass(to);
    };

    function nextFrame() {

        if(atual <= last){
            moveFrame(frames[atual], frames[atual++]);

        };
    };

    function reset() {
        moveFrame(frames[atual],frames[0]);
        atual = 0;

    };

    function isFinished() {

        return atual + 1>= last;

    }

    return {
        nextFrame: nextFrame,
        reset: reset,
        isFinished: isFinished
    };
}
2 respostas

Rodrigo, boa tarde!

Tente atribuir essas funções a uma variável, e a partir daí retornar ela como uma função.

Abaixo tem um exemplo que pode lhe ajudar a compreender melhor

https://codepen.io/devcapu-the-looper/pen/JjjGYwV?editors=0010

Espero ter ajudado e bons estudos!

O exercício é exatamente este. Fazemos a atribuição de createSprite a uma variável. As outras funções (nextFrame e isFinished) funcionam perfeitamente, só reset() que não.