4

Googleクロージャーjsライブラリでカスタムイベントディスパッチャを作成しようとしています. このコードは、fx フォルダーのアニメーション クラスに基づいていますが、このエラーが発生し続けます..

「goog.events は未定義です」

まだイベントパッケージを一番上に含めています。これが私のコードです。

    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 から継承しようとすると、このエラーがスローされます。継承するために含める必要があるものはありますか? 継承呼び出しを削除すると、エラーはスローされませんが、それは私がやろうとしていることの目的を無効にします。何か案は?ありがとうございました。

4

1 に答える 1

4

私はグーグルクロージャーライブラリディスカッショングループでこれに対する答えを受け取りました。これが解決策です。

スクリプトをインポートする前に、必要なイベントを配置します。

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

問題は、goog.require()をコードの使用よりも前のパスで評価する必要があり、goog.inherits()が同じパスで実行されることです。

于 2011-03-24T15:37:04.147 に答える