0

私は Flash CS5.5 でゲームを作成しています。これは、基本的に「億万長者になりたい人」のバージョンです。

回答テキストを含む answerDisplay クラスがあります。回答テキストはかなり長くなる可能性があります。画面スペースが限られているため、非常に長いテキストをチェックし、テキストが大きすぎる場合は、テキスト フィールドの横に UIScrollbar を追加します。

ユーザーがスクロールタブをドラッグすると、テキストがうまくスクロールするという1つのことを除いて、これはうまく機能します。ユーザーがスクロールバーの矢印の1つをクリックすると、ボタンがクリックされている限り、テキストフィールドも正常にスクロールしますが、マウスボタンが離されるとすぐに、含まれているanswerDisplayクラスのクリックイベントが発生し、プログラムが間違って発生しますユーザーがスクロールしようとしているときに答えを選択したと考えています。

e.target および/または e.currenttarget を介してこれをキャッチしようとしましたが、役に立ちません。スクロールバーへの参照を取得できないため、ユーザーが矢印のいずれかをクリックしたのか、それとも本当に答えをクリックしたのかはわかりませんをクリックして選択します。

UIScrollbar の使用時に answerDisplay クラスのクリック イベントが発生しないようにするにはどうすればよいですか?

4

1 に答える 1

1

チェックe.targete.currentTargetて、良いスタートです。

イベント フェーズを確認することもできます。

イベントバブリング

イベントフェーズの詳細については、グレープフルーツの回答を確認してください

answerDisplay クラスのディスパッチ イベントからのクリックには AT_TARGET フェーズが必要ですが、UIScrollbar イベントにはBUBBLING_PHASE. これは、2 つを区別するのに役立ちます。また、 answerDisplay クラスの UIScrollbar にイベント リスナーを追加して、イベントをキャプチャし、stopPropagation()で抑制することもできます。

UIScrollbar が内部でイベント バブルを使用する方法に応じて、stopPropagation() または stopImmediatePropagation() のいずれかを試すことができます。目標は、answerDisplay から発生するイベントを停止することですが、UIScrollbar の機能を壊すことはありません。

于 2012-06-17T13:28:09.127 に答える