分享篇
天气:
 分类:心情日记 日记本:sara的点滴 作者:2005 2015-05-05 17:05 阅读数:

currentTarget和targe

"   直入主题:<esri:Mapid=""mapControl""width=""100%"" height=""100%""    logoVisible=""false""scaleBarVisible=""false""zoomSliderVisible=""false""    openHandCursorVisible=""false"">  <esri:extent>   <esri:Extentxmin=""13426784.5800013""xmax=""13431551.9204903""ymin=""3933880.12765432""ymax=""3939185.91147929""/>  </esri:extent>  <customLayer:GoogleMapServiceLayerid=""googleMapService""/>   <esri:GraphicsLayerid=""fisheryLayer""alpha=""1""/> </esri:Map>  如上添加GoogleMapServiceLayer底图,然后添加了一GraphicLayer图层,以下面的方式<fx:Declarations>  <esri:Queryid=""query""outSpatialReference=""{mapControl.spatialReference}""returnGeometry=""true""where=""1=1""/>  <esri:QueryTaskid=""queryTask""showBusyCursor=""true""useAMF=""false""/>    <esri:SimpleFillSymbolid=""sfsIdentify""color=""0xE6C823""alpha=""1""style=""solid"">   <esri:SimpleLineSymbolcolor=""0x6E6E6E""width=""1""alpha=""1""style=""solid""/>  </esri:SimpleFillSymbol> </fx:Declarations> queryTask.url= ""http://服务器IP地址/ArcGIS/rest/services/fishing/MapServer/1"""";    query.outFields=[""Areaq""];    queryTask.execute(query,newAsyncResponder(onPolygonResult,onFault)); privatefunctiononPolygonResult(featureSet:FeatureSet,token:Object=null):void   {    if(featureSet.features.length==0)    {     Alert.show(""无数据!"");    }    else    {     for(vari:int=0;i<featureSet.features.length;i++)     {      varg:Graphic=featureSet.features[i];      g.symbol=polygonSym;      g.useHandCursor=true;      g.buttonMode=true;      g.addEventListener(MouseEvent.CLICK,polygonClickHandler);      fisheryLayer.add(g);     }     }   }往GraphicLayer中加载面要素,并且给每个面要素注册了Click事件监听,一般是通过点击地图drag来拖动地图的,但当鼠标点击到面要素后却拖动不了地图。   后在高人指点下,略去每个要素Click事件的监听,改成注册GraphicLayer的Click事件的监听,如:<esri:GraphicsLayerid=""fisheryLayer""alpha=""1""click=""polygonClickHandler(event);""/>这样即使点击到面要素上也可以拖动地图了。   开始在听到改用GraphicLayer的Click事件监听的时候还疑惑,两个不同组件的Click事件应该不一样的,比如GraphicLayerClick后获取的是图层对象,要素Click后应该获取的是Graphic对象,这样改后怎还可以正常如常的运行呢?原来事件对象都有两个属性,一个是currentTarget,一个是target,currentTarget获取到的是注册事件的那个组件,target获取到的则是鼠标点击的那个组件,所以在这个问题中用varpg:Graphic=event.targetasGraphic;便可以获取所点的Graphic对象注:并且对GraphicsLayer注册监听事件,效率更高。   今天收获很大,一直以来currentTarget和target区别一直都不清楚,今天很形象的理解了。"
     
     
     此篇日记共有0个评论
         
     
     
首页 最新日记 佳作推荐 最新日记本 日记本排行 日记搜索 管理日记 服务中心