- 2009年02月12日 (木)
- Tweet
FlexアプリケーションでMacのマウスホイールに対応させる
久しぶりに Flex の話題。Flash は一般的に Mac 環境のブラウザでマウスホイールが効きません。そのため Flex では DataGrid や ComboBox などスクロールバーを利用するものは、Mac 環境で使い勝手が多少落ちてしまいます。
対処方法として、 Flash 単独では Mac のマウスホイールに対応できないので、JavaScript と連動させる仕組みを実装します。やや難しい実装方法となるため、少数派のユーザーのために大きな労力をかける必要がありました。そのため対応するところに開発者の良心のようなものが見えるというコメントがあるほどです。
前置きが長くなりましたが、最近では複数環境のマウスホールイベントに対応した SWFWheel ライブラリを使用することで簡単に解決できます。Flex アプリケーションもしかりで、SWFWheel を使う事で mx.controls.scrollClasses.ScrollBar を Mac のマウスホイール対応にできます。まずはデモでチェックしてみます。
Macのマウスホイールのデモ
Windowsの方はどちらのデモも変わらず動作すると思いますが、Mac環境では通常の Flex デモはマウスホイールが動作しません。
※List に表示している情報は 萌店APIを使用させて頂きました。おかげさまで花のない当ブログが鮮やかになりました(^ー^)
- デモのソースはこちら(FlashDevelopプロジェクト、MXML、zip)
実装方法
SWFWheel – Spark project からライブラリを入手。
メインアプリの applicationComplete イベントハンドラーに次の一行を記述するだけです。これで Mac 環境のブラウザにおいても全てのコンポーネントのマウスホイールが動作するようになります。
[source:javascript]
SWFWheel.initialize(stage);
[/source]
ポイントとしてcreationCompleteのタイミングではstageを参照できないことがあるので、applicationCompleteのタイミングを使う事です。
参考
HTML側はエンベッド時の属性を追加してあげるだけでOKです(以下のページを参照ください)。特にJavaScriptファイルを用意する必要はありません(ActionScript内に含められているため)
参考
ついでに
ついでに Flex フレームワーク(MXML)で作った当ブログの Flash Lab ページも Mac のマウスホイールに対応させてみました。
2009年02月12日(木) 23:11
紹介頂いちゃってありがとうございます!!
SWFWheel の中の HIGE です。
これからも改善・修正どんどこ頑張りますよー 🙂
2009年02月12日(木) 23:57
nobuさん
作者直々のコメントありがとうございます!
FlashのUIコンポーネントでもSWFWheelの恩恵を受けたので、Flexでも効果あるかもと思い試してみました。大変便利なライブラリ、継続的な開発がんばってくださいー!
2009年06月23日(火) 02:35
[…] その利用方法については、ClockMaker Blog の FlexアプリケーションでMacのマウスホイールに対応させる […]
2010年04月19日(月) 18:58
[…] なみに、ScrollPanelだけじゃなくて、コンポーネント全般にも使えるはず。 Flexの場合はもっと簡単にできるみたい。詳しくはこの方の記事へ。 Tags: ScrollPane, SWFWheel, コンポーネント […]