AS3 Macでのマウススクロールイベント

FICC安藤です。

連続で Box2DFlashAS3 関連のエントリーでしたが今回は実用的なエントリー、対応するところに開発者の良心のようなものが見える「AS3 Macでのマウススクロールイベント」です。

AS2のMacMouseWheelと同じくpixelbreakerの方がAS3バージョンを公開されています。

AS2バージョンよりシンプルになってまずはimport。

import com.pixelbreaker.ui.osx.MacMouseWheel;

前回はなかったsetup。

MacMouseWheel.setup(stage);

後はイベントを取得するだけ。

stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);

これだけで後は全く意識せずにMac&Win両方対応できます、かなり便利です。
SafariとFirefoxでスクロール量(特に大きく動かしたとき)の違いはまだ残っていますがかなり差は小さくなった気がします。

たまにやってしまいますがMacではFlashのプレビューで動かそうとしても動かないのでhtmlから確認してください。

追記:
del.icio.us コメントで気づきましたがFirefoxだと完全にFlash Playerがスクロールを持っていってます。
逆にWin IE6 / 7だと完全にブラウザに持ってかれます。
全画面で使う分には良さそうですが、ブログパーツに使ったりするのは危ないかもしれません。
なので、サンプルは全画面で開くように変えました。

サンプルを開く

package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import com.pixelbreaker.ui.osx.MacMouseWheel;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	
	public class Main extends Sprite{
		private var txtFld:TextField;
//============================================================================================//
//		Constructor
//============================================================================================//
		public function Main(){
			init();
		}
//--------------------------------------------------------------------------------------------------------------------------------//
//		init
//--------------------------------------------------------------------------------------------------------------------------------//
		private function init():void{
			MacMouseWheel.setup(stage);
			txtFld = new TextField();
			txtFld.selectable = false;
			txtFld.autoSize = TextFieldAutoSize.LEFT;
			txtFld.text = 'MacMouseWheel';
			txtFld.textColor = 0xFFFFFF;
			txtFld.x = Math.round(stage.stageWidth / 2 - txtFld.width / 2);
			txtFld.y = Math.round(stage.stageHeight / 2 - txtFld.height / 2);
			addChild(txtFld);
			stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
			stage.addEventListener(Event.RESIZE, resizeHandler);
		}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//		enterFrameHandler
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
		private function enterFrameHandler(_evt:Event):void{
		}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//		mouseWheelHandler
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
		private function mouseWheelHandler(_evt:MouseEvent):void{
			txtFld.y -= _evt.delta;
			if(txtFld.y > stage.stageHeight + txtFld.height){
				txtFld.y = 0 - txtFld.height;
			}else if(txtFld.y < 0 - txtFld.height){
				txtFld.y = stage.stageHeight - txtFld.height;
			}
		}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
//		resizeHandler
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
		private function resizeHandler(_evt:Event):void{
			txtFld.x = Math.round(stage.stageWidth / 2 - txtFld.width / 2);
		}
	}
}

トラックバック(1)

このブログ記事を参照しているブログ一覧: AS3 Macでのマウススクロールイベント

このブログ記事に対するトラックバックURL: http://www.ficc.jp/cgi-bin/mt4/mt-tb.cgi/17

Actionscript3.0 で MacのMouse Wheel(マウスホイール)対応できるライブラリ HIGEWheel を使ってみました。 Macの... 続きを読む

コメントする