4月 19, 2010
MacのマウスホイールでScrollPanelをコロコロしたい
3時間くらい詰まってたので後世のため書いとこう。
Flashのコンポーネント全般はMacではマウスホイールが効かない。
自分がWindowsユーザーなら絶対無視するが、
残念なことに、社会人になってからずっ〜とMacユーザー。
とりあえず、SWFWheelを使うことは間違いない。
問題はどうやってスクリプトでコンポーネントのハンドル(サム)を動かすんだ?
verticalScrollPositionってプロバティが怪しいので、
使ってみたらサムが動いた!
ってことで、SWFWheelの設置方法は割愛して、
ScrollPanelとの連携だけ書こう。
package { import fl.containers.ScrollPane; import flash.display.*; import flash.events.MouseEvent; import org.libspark.ui.SWFWheel; public class test extends MovieClip { //今回の主人公、スクロールパネル var MyPanel:ScrollPane = new ScrollPane(); public function test() { //SWFWheelを初期化 SWFWheel.initialize(this.stage); //マウスホイールのイベントを取得する stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler); //何かでっかいものをスクロールパネルに突っ込む var _pic:pic = new pic(); MyPanel.source = _pic; } private function mouseWheelHandler(e:MouseEvent):void { //SWFWheelから取得したマウスのスクロールを //スクロールパネルのハンドル(サム)を動かす MyPanel.verticalScrollPosition -= e.delta; } } }
ちなみに、ScrollPanelだけじゃなくて、コンポーネント全般にも使えるはず。
Flexの場合はもっと簡単にできるみたい。詳しくはこの方の記事へ。