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の場合はもっと簡単にできるみたい。詳しくはこの方の記事へ。