1

マウスが次のサブクラスの上に上がったときに関数を呼び出そうとしましたgoog.ui.Control

/** @override */
myapp.MyButton.prototype.handleMouseUp =
    function(e) {
  goog.base(this, 'handleMouseUp', e);
  alert('Woof!');
}

ただし、ボタンをクリックしてもアラートが表示されません。なぜだめですか?handleMouseUpクリック後にマウスを上げると呼び出されませんか?

4

1 に答える 1

1

のソースコードにgoog.ui.Controlは、次のコメントが含まれています。

すべてのコントロールは、show、hide、mouseover、mouseout、およびuserアクションでそれぞれSHOW、HIDE、ENTER、LEAVE、およびACTIONイベントをディスパッチします。

さまざまなアクションに対してどのイベントがディスパッチされているかを正確に確認するには、ライブイベントログがあるgoog.ui.Controlデモをご覧ください。

追加の遷移イベントを有効にするためにgoog.ui.Control、次のメソッドを含めます。

/**
 * Enables or disables transition events for the given state(s).  Controls
 * handle state transitions internally by default, and only dispatch state
 * transition events if explicitly requested to do so by calling this method.
 * @param {number} states Bit mask of {@link goog.ui.Component.State}s for
 *     which transition events should be enabled or disabled.
 * @param {boolean} enable Whether transition events should be enabled.
 */
goog.ui.Control.prototype.setDispatchTransitionEvents = function(states,
    enable) {
  this.statesWithTransitionEvents_ = enable ?
      this.statesWithTransitionEvents_ | states :
      this.statesWithTransitionEvents_ & ~states;
};

たとえば、次のようにして、すべての状態の遷移イベントを有効にすることができます。

var myButton = new myapp.MyButton();
myButton.setDispatchTransitionEvents(goog.ui.Component.State.ALL, true);

これで、マウスボタンを押すとactivateイベントがディスパッチされ、マウスボタンを離すとdeactivateイベントがディスパッチされます。

goog.ui.Buttonデモ(特に、ページの下部にある組み合わせたトグルボタン)を参照してください。

于 2012-08-12T05:22:55.463 に答える