function Typewriter() {
    this.typedText;
    this.timer;
    this.pickedQuote;
    var _that = this;
    var game;
    function init(gameInstance, options) {
        game = gameInstance;
        _that.time = options.time || Phaser.Timer.SECOND / 10;
        _that.sound = options.sound || null;
        _that.writerFn = options.writerFn || null;
        _that.endFn = options.endFn || null;
        _that.times = options.times || 10;
        _that.text = options.text || "";
        _that.x = options.x || 100;
        _that.y = options.y || 100;
        _that.maxWidth = options.maxWidth || 200;
        _that.fontFamily = options.fontFamily || "blackFont";
        _that.fontSize = options.fontSize || 28;
        _that.writerObj = options.writerObj || null;
    }

    function start() {
        enableTypingSpecificMessage(_that.text, _that.x, _that.y);
    }

    function enableTypingSpecificMessage(text, x, y) {

        if (_that.writerObj === null) {
            _that.typedText = game.add.bitmapText(x, y, _that.fontFamily, text, _that.fontSize);
        } else {
            _that.typedText = _that.writerObj;
        }
        _that.typedText.maxWidth = _that.maxWidth;
        _that.currentLetter = 0;
        var length = _that.typedText.children.length;

        for (var i = 0; i < length; i++){
            var letter = _that.typedText.getChildAt(i);
            letter.alpha = 0;
        }

        if (_that.sound !== null) {
            _that.sound.play();
        }

        _that.typedText.x = x;
        _that.typedText.y = y;
        if (_that.endFn !== null) {
            countdown(typeWriter, length, _that.endFn);
        } else {
            countdown(typeWriter, length);
        }
    }

    /**
     * [countDown description]
     * @param  {Function} fn    [description]
     * @param  {[type]}   endFn [description]
     * @return {[type]}         [description]
     */
    function countdown(fn, times, endFn) {
        var _timer = game.time.create(false);
        _timer.start();
        endFn = endFn || function () {
            game.time.events.remove(_timer);
            if (_that.sound !== null) {
                _that.sound.stop();
            }
        };
        _timer.onComplete.add(endFn);
        _timer.repeat(_that.time, times, fn, this);
    }

    function typeWriter(text) {
        if (_that.sound !== null) {
            if (_that.sound.isPlaying === false) {
                _that.sound.play();
            }
        }
        var letter = _that.typedText.getChildAt(_that.currentLetter);
        letter.alpha = 1;
        _that.currentLetter++;
    }

    return {
        init: function (gameInstance, options) {
            init(gameInstance, options);
        },
        start: function () {
            start();
        },
        destroy: function() {
            _that.typedText.destroy();
        },
        hideText: function() {
            _that.typedText.visible = false;
        },
        showText: function() {
            _that.typedText.visible = true;
        },
        moveToTop: function() {
            game.bringToTop(_that.typedText);
        }
    }
}
@@ -111,16 +111,17 @@
 r game;%0A
+%0A
     func
@@ -854,32 +854,364 @@
 that.y);%0A    %7D%0A%0A
+    function stop() %7B%0A        if (_that.timer !== undefined) %7B%0A            _that.timer.stop();%0A            game.time.events.remove(_that.timer);%0A        %7D%0A        if (_that.sound !== null) %7B%0A            _that.sound.stop();%0A        %7D%0A        if(_that.typedText !== undefined)%7B%0A            _that.typedText.destroy();%0A        %7D%0A    %7D%0A%0A
     function ena
@@ -1640,16 +1640,17 @@
 th; i++)
+ 
 %7B%0A      
@@ -2373,33 +2373,32 @@
 ndFn %7C%7C function
- 
 () %7B%0A           
@@ -2618,24 +2618,54 @@
  fn, this);%0A
+        _that.timer = _timer;%0A
     %7D%0A%0A    f
@@ -3007,17 +3007,16 @@
 function
- 
 (gameIns
@@ -3112,14 +3112,33 @@
 tion
- 
 () %7B%0A
+            stop();%0A
     
@@ -3512,9 +3512,10 @@
 %7D%0A    %7D%0A
-
 %7D
+%0A

Fix for issue #3