1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| package gardeneditor.toolbar
{
import assets.Resources;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.utils.Timer;
import gardeneditor.GardenEditor;
import gardeneditor.gardenplan.Item;
public class Tool_plan extends Tool
{
protected var _dragDownPt:Point;
protected var _prevPt:Point;
public function Tool_plan(gardenEditor:GardenEditor)
{
super(gardenEditor,"action",GardenEditor.MODE_PLAN,Tool.MODE_EDITION);
setStyle("icon",Resources.ICON_ARROW);
}
override public function startAction():void{
super.startAction();
gardenEditor.plan.addEventListener(MouseEvent.CLICK,select);
gardenEditor.plan.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
gardenEditor.plan.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
}
override public function endAction(keepCurrent:Boolean = false):void{
gardenEditor.plan.removeEventListener(MouseEvent.CLICK,select);
gardenEditor.plan.removeEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
gardenEditor.plan.removeEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
super.endAction(keepCurrent);
}
protected function select(event:MouseEvent):void{
if(event.target is Item){
var item:Item = event.target as Item;
gardenEditor.loadSpecialEditionMode(item.type);
gardenEditor.plan.focusedItem = item;
}
else
trace("click");
}
protected function mouseDownHandler(event:MouseEvent):void{
_dragDownPt = new Point(gardenEditor.plan.mouseX,gardenEditor.gardenNav.scroller.mouseY);
_prevPt = new Point(_dragDownPt.x,_dragDownPt.y);
gardenEditor.plan.addEventListener(MouseEvent.MOUSE_MOVE,movePlan);
}
protected function mouseUpHandler(event:MouseEvent):void{
gardenEditor.plan.removeEventListener(MouseEvent.MOUSE_MOVE,movePlan);
}
protected function movePlan(event:MouseEvent):void{
if(Math.abs(_dragDownPt.x - gardenEditor.gardenNav.scroller.mouseX) <= 2 && Math.abs(_dragDownPt.y - gardenEditor.gardenNav.scroller.mouseY) <= 2
|| Math.abs(_prevPt.x - gardenEditor.gardenNav.scroller.mouseX) > 100
|| Math.abs(_prevPt.y - gardenEditor.gardenNav.scroller.mouseY) > 100)
return;
trace((_prevPt.x - gardenEditor.gardenNav.scroller.mouseX)+" , "+(_prevPt.y - gardenEditor.gardenNav.scroller.mouseY));
gardenEditor.gardenNav.scroller.horizontalScrollPosition += _prevPt.x - gardenEditor.gardenNav.scroller.mouseX;
gardenEditor.gardenNav.scroller.verticalScrollPosition += _prevPt.y - gardenEditor.gardenNav.scroller.mouseY;
_prevPt.x = gardenEditor.gardenNav.scroller.mouseX;
_prevPt.y = gardenEditor.gardenNav.scroller.mouseY;
}
}
} |
Partager