Canvasレイアウトのドラッグ・サンプルソース改良版
現在開発中のプロジェクトで、Canvasレイアウトをマウスでドラッグして移動させる必要がありました。昨日作成したプログラムでは処理が重過ぎるのか、動きがもたつく感があったので今日改良しました。Flexではドラッグ&ドロップをサポートしたメソッドが用意されているので使ってみることにしました。当初はDataGridコントロールやTreeコントロールで使われることが想定されていて、使えないんじゃないかなと思っていましたが、十分に使えました。
昨日作成したCanvasを直接移動させるプログラムと比べてみたところ、遥かに軽く移動処理ができるようになりました。
今回も忘れない内にFlex備忘録として残して置きます。
Canvasレイアウトのドラッグ・startDrag(),stopDrag()バージョン
・スクリプトの抜粋 // マウスボタンダウン private function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler()実行!"); mindmapView.startDrag(); } // マウスボタンアップ private function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler()実行!"); mindmapView.stopDrag(); } // マウスアウト private function mouseOutHandler(event:MouseEvent):void { trace("mouseOutHandler()実行!"); mindmapView.stopDrag(); } ・MXML定義から抜粋 <mx:Canvas id="mindcanvas" width="100%" height="100%" styleName="mindBox" mouseDown="mouseDownHandler(event)" mouseUp="mouseUpHandler(event)" mouseOut="mouseOutHandler(event)" horizontalScrollPolicy="auto" verticalScrollPolicy="auto"> <MyComp:MindMapView id="mindmapView"/> </mx:Canvas>