проблемы с созданием собственного диспетчера событий в библиотеке закрытия Google - PullRequest
4 голосов
/ 24 марта 2011

Я пытаюсь создать собственный диспетчер событий в библиотеке Google Closure JS.Я основываю этот код на классе анимации в папке fx, но все еще получаю эту ошибку ..

"goog.events is undefined"

пока я включаю событияпакет наверху.вот мой код

    goog.provide('test.util.Animation');
    goog.provide('test.util.Animation.EventType');
    goog.provide('test.util.AnimationEvent');

    goog.require('goog.events');
    goog.require('goog.events.EventTarget');
    goog.require('goog.events.EventType');



    /**
    * Constructor for an animation object.
    * @constructor
    * @extends {goog.events.EventTarget}
    */
    test.util.Animation = function() {
      goog.events.EventTarget.call(this);
    };
    goog.inherits(test.util.Animation, goog.events.EventTarget);

    /**
    * Events fired by the animation.
    * @enum {string}
    */
    test.util.Animation.EventType = {
       ANIM_IN: 'anim_in',
       ANIM_OUT: 'anim_out'
    };

    /**
    * Class for an animation event object.
    * @extends {goog.events.Event}
    */
    test.util.AnimationEvent = function(type, anim) {
       goog.events.Event.call(this, type);
    };
    goog.inherits(test.util.AnimationEvent, goog.events.Event);

Я включаю все необходимые файлы и все остальное в другой код, который я написал, работает нормально.Просто когда я пытаюсь унаследовать от goog.events.EventTarget, он выдает эту ошибку.Что-то, что мне нужно включить, чтобы наследовать?Если я удаляю вызов наследования, то он не выдаст ошибку, но это противоречит цели того, что я пытаюсь сделать.есть идеи?благодарю вас.

1 Ответ

4 голосов
/ 24 марта 2011

Я получил ответ на этот вопрос в группе обсуждения библиотеки Google Closure. Вот решение.

Поместите требуемые события перед импортом скрипта:

<script>goog.require('goog.events');</script>
<script src="whatever your script is.js"></script>

Проблема в том, что goog.require () нужно оценивать на более раннем проходе, чем вы используете код, а goog.inherits () запускается на том же проходе.

...