Changeset 3028 for lang/actionscript/swfgmap
- Timestamp:
- 12/11/07 01:48:40 (13 months ago)
- Location:
- lang/actionscript/swfgmap/trunk
- Files:
-
- 6 modified
-
TestApp.swf (modified) (previous)
-
gyuque/gmap/GMapView.as (modified) (3 diffs)
-
gyuque/gmap/Layer.as (modified) (2 diffs)
-
gyuque/gmap/LayerManager.as (modified) (5 diffs)
-
gyuque/gmap/PointZoomAnimation.as (modified) (1 diff)
-
gyuque/gmap/googlemaps/GMapMapLayer.as (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/actionscript/swfgmap/trunk/gyuque/gmap/GMapView.as
r3003 r3028 126 126 z += d; 127 127 if (z < 0) z = 0; 128 if (z > 16) z = 16; 129 128 if (z > 17) z = 17; 129 130 var oldZ:int = mCurrentViewport.zoom; 130 131 mCurrentViewport.zoom = z; 132 133 if (mCurrentViewport.zoom == oldZ) 134 return; 135 131 136 if (px >= 0 || py >= 0) { 132 137 var mv:Point = calcFixedPointZoom(px, py, (d>0) ? 2 : 0.5, mCurrentViewport); … … 134 139 } 135 140 136 fireViewportChange( 0,0,z - oldz, animation);141 fireViewportChange(mv.x, mv.y, z - oldz, animation); 137 142 } 138 143 … … 148 153 var dy:Number = sy2 - sy; 149 154 150 // var retval:Point = new Point();151 // vpAfter.transformVectorScreenToView(dx, dy, retval);152 // return retval;153 155 return new Point(dx, dy); 154 156 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/Layer.as
r3003 r3028 32 32 } 33 33 34 p rotectedfunction onViewportChanged(e:GMapViewEvent):void34 public function onViewportChanged(e:GMapViewEvent):void 35 35 {} 36 36 … … 45 45 } 46 46 47 public function relay(e:GMapViewEvent):void47 public function clone():Layer 48 48 { 49 return new Layer(mEventSource, mParent); 49 50 } 50 51 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/LayerManager.as
r3003 r3028 7 7 8 8 private var mAnimDisp:IAnimationDispatcher; 9 private var mTransformMat:Matrix = new Matrix(); 9 10 10 11 public function LayerManager(c:DisplayObjectContainer) … … 18 19 } 19 20 20 public function floatLayer(idx:int):void21 {22 //getChildAt(23 }24 21 25 22 public function removeLayer(idx:int, floatLayer:Boolean):void 26 23 { 27 24 var cidx:int = idx*2 + (floatLayer ? 1 : 0); 28 if ( getChildAt(cidx))25 if (cidx <= numChildren && getChildAt(cidx)) 29 26 removeChildAt(cidx); 30 27 } … … 36 33 } 37 34 38 p rotectedoverride function onViewportChanged(e:GMapViewEvent):void35 public override function onViewportChanged(e:GMapViewEvent):void 39 36 { 40 37 var firstset:Boolean = false; … … 70 67 M.ty = v.height * 0.5; 71 68 69 mTransformMat = M; 70 transform.matrix = M; 71 } 72 73 public function set postZoom(r:Number):void 74 { 75 var M:Matrix = mTransformMat.clone(); 76 M.a *= r; 77 M.b *= r; 78 M.c *= r; 79 M.d *= r; 72 80 transform.matrix = M; 73 81 } … … 77 85 out.x = 0; 78 86 out.y = 0; 79 //mViewport.transformVectorScreenToView(mPanPos.x, mPanPos.y, out);80 87 } 81 88 -
lang/actionscript/swfgmap/trunk/gyuque/gmap/PointZoomAnimation.as
r3003 r3028 3 3 public class PointZoomAnimation extends Animation 4 4 { 5 import flash.geom.Point; 6 5 7 private var mOldLayer:Layer; 6 8 private var mViewEvent:GMapViewEvent; 7 public function PointZoomAnimation(oldLayer:Layer, e:GMapViewEvent) 9 private var mLayerMan:LayerManager; 10 private var mFloatingIndex:int; 11 private var mDZoom:int; 12 private var STEPS:int = 6; 13 private var mCount:int = 0; 14 15 private var mOrgX:Number; 16 private var mOrgY:Number; 17 private var mShift:Point; 18 19 public function PointZoomAnimation(oldLayer:Layer, e:GMapViewEvent, man:LayerManager) 8 20 { 9 21 mOldLayer = oldLayer; 22 23 mDZoom = e.dZoom; 24 e.dZoom = 0; 25 10 26 mViewEvent = e; 27 mLayerMan = man; 28 mOrgX = oldLayer.x; 29 mOrgY = oldLayer.y; 30 31 mShift = new Point(e.screenDX, e.screenDY); 32 e.screenDX = 0; 33 e.screenDY = 0; 34 11 35 } 12 36 37 private function relayAndFloat():void 38 { 39 mOldLayer.terminate(); 40 41 var cidx:int = mOldLayer.layerIndex*2; 42 mFloatingIndex = cidx+1; 43 if (cidx < (mLayerMan.numChildren-1) && mLayerMan.getChildAt(mFloatingIndex)) 44 mLayerMan.removeChildAt(mFloatingIndex); 45 46 mLayerMan.removeChildAt(cidx); 47 var newLayer:Layer = mOldLayer.clone(); 48 mLayerMan.addChildAt(newLayer, cidx); 49 mLayerMan.addChildAt(mOldLayer, mFloatingIndex); 50 51 newLayer.onViewportChanged(mViewEvent); 52 } 13 53 14 54 public override function next():Boolean 15 55 { 16 skip(); 17 return false; 56 if (mCount == 0) 57 relayAndFloat(); 58 59 if (++mCount >= STEPS) 60 { 61 skip(); 62 return false; 63 } 64 65 var rt:Number = 0.14 * mCount; 66 var pz:Number = (mDZoom > 0) ? (rt + 1.0) : (1.0 - rt/2); 67 68 mLayerMan.postZoom = pz; 69 mOldLayer.x = mOrgX - rt * mShift.x/pz; 70 mOldLayer.y = mOrgY - rt * mShift.y/pz; 71 72 return true; 18 73 } 19 74 20 75 public override function skip():void 21 76 { 22 mOldLayer.terminate(); 23 mOldLayer.relay(mViewEvent); 24 } 77 mLayerMan.postZoom = 1; 78 if (mFloatingIndex < mLayerMan.numChildren && mLayerMan.getChildAt(mFloatingIndex) == mOldLayer) 79 mLayerMan.removeChildAt(mFloatingIndex); 80 } 25 81 } 26 82 } -
lang/actionscript/swfgmap/trunk/gyuque/gmap/googlemaps/GMapMapLayer.as
r3003 r3028 41 41 } 42 42 43 p rotectedoverride function onViewportChanged(e:GMapViewEvent):void43 public override function onViewportChanged(e:GMapViewEvent):void 44 44 { 45 45 var firstset:Boolean = false; … … 49 49 if (e.dZoom) 50 50 { 51 e.dZoom = 0; 52 53 var a:PointZoomAnimation = new PointZoomAnimation(this, e); 54 addAnimation(a); 51 if (mParent is LayerManager) 52 { 53 var a:PointZoomAnimation = new PointZoomAnimation(this, e, LayerManager(mParent)); 54 addAnimation(a); 55 } 55 56 56 57 return; … … 70 71 } 71 72 72 public override function relay(e:GMapViewEvent):void73 public override function clone():Layer 73 74 { 74 var man:LayerManager; 75 if (mParent is LayerManager) 76 man = LayerManager(mParent); 77 else 78 return; 79 80 man.removeLayer(layerIndex, false); 81 82 var newLayer:GMapMapLayer = new GMapMapLayer(mEventSource, man); 75 var newLayer:GMapMapLayer = new GMapMapLayer(mEventSource, mParent); 83 76 newLayer.layerIndex = layerIndex; 84 77 newLayer.debug_out = mVPobs.dout; // 85 man.putLayer(layerIndex, newLayer);86 newLayer.onViewportChanged(e);78 79 return newLayer 87 80 } 88 81
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)