メイン コーダーズルーム【スクリプト系】 ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | 投稿するにはまず登録を |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
961832p | Åê¹ÆNo.40627 投稿日時: 2008-10-30 21:56 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境:
|
Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? [2008-10-31: わかりにくかったのでソースを追加しました(一部省略)] 先日使えなかったLowLevelEventsが、なぜか大丈夫になったので自分も試してみました。 確かに投稿されてあるように、mouseMoveイベントがScrollPaneのドラッグ時に呼ばれなくなることを確認。 原因を確かめるためにライブラリのLowLevelEvents.asとScrollPane.asの処理の流れを追ってみると、 ・LowLevelEventsはonRollOver時に、onMouseMoveへフック処理(mouseMoveイベントを発行したあと、オリジナルのonMouseMoveを実行)をセットしている ・ScrollPaneは、onPress時にstartDragLoop関数を呼んでonMouseMoveへドラッグ処理をセットしている ・onPress時におこなう処理(startDragLoop関数を呼ぶ)は、scrollDragプロパティをtrueへ変更した時にセットしている こんな感じだったので、ScrollPaneにマウスカーソルが入ってくる→onRollOver発生→onMouseMoveへフック処理をセット→ドラッグするためクリック→onPress発生→onMouseMoveが上書きされる、このような流れのため、ドラッグ時はmouseMoveイベントが発生しなくなるようです。 なんとかできないかなと思い、ScrollPaneのonPressを上書きして、startDragLoopを実行後onRollOverを直接呼出し、再度フック処理を有効にするという無茶苦茶なことをしてしまいました(苦笑)。
これだとドラッグ時でもmouseMoveイベントを受け取れるようになりましたが、ドラッグしたままScrollPaneの外でマウスボタンを離すと、以降ドラッグできなくなる等といった問題も発生しました。 LowLevelEventsを使った、まともな実現方法はあるのかもしれませんが自分は結局、LowLevelEventsを使うことは諦め、ScrollPaneを継承したクラスを作って、startDragLoop関数内にあるonMouseMove処理の最後に、追加の関数を呼び出すよう少し変更することで実現できました。 自分でふったLowLevelEventsでしたが、自分で試していなかったのがダメでした…お騒がせしてすみません。 もっとスマートな実現方法があるといいのですが…。 ・テストページ
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | flashlite | 2008-10-24 2:27 |
Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | 961832p | 2008-10-24 19:30 |
Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | flashlite | 2008-10-27 13:16 |
Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | 961832p | 2008-10-27 21:08 |
» Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | 961832p | 2008-10-30 21:56 |
Re: ScrollPaneコンポーネントでのドラッグイベントの取得方法は? | flashlite | 2008-10-31 0:54 |
投稿するにはまず登録を | |