openscale 矩形放大框实现,sprite对象的使用

本博客介绍如何在地图应用中使用Sprite进行交互式操作,包括添加、移动、缩放地图区域,并通过事件监听实现鼠标控制。通过实例演示,用户可以了解如何通过Sprite实现地图的动态展示与交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sprite不要控制它的x,y,width,height,只要map1.map.addchild就可以画了,否则就是画蛇添足,画的内容不会显示。


            protected function button26_clickHandler(event:MouseEvent):void

            {
                // TODO Auto-generated method stub
                opemode=13;
                map1.map.addEventListener(MouseEvent.MOUSE_DOWN,handler_zoompan);
                map1.map.addEventListener(MouseEvent.MOUSE_UP,handler_zoompan);

            }


            private var mysprite:Sprite=new Sprite();
            
            private var md_x:int;

            private var md_y:int;


            private function handler_zoompan(event:MouseEvent):void
            {    
                //!!在系统初始化处需要添加  map1.map.addChild(mysprite);
                if(opemode==13)
                {
                    if(event.type==MouseEvent.MOUSE_DOWN)
                    {
                        md_x=event.localX;
                        md_y=event.localY;
                        mysprite.graphics.clear();
                        //鼠标按下后,移动鼠标时,处理
                        map1.map.addEventListener(MouseEvent.MOUSE_MOVE,handler_zoommove);
                        //Alert.show("aaa");
                    }

                    if(event.type==MouseEvent.MOUSE_UP)
                    {
                        mysprite.graphics.clear();
                        map1.map.removeEventListener(MouseEvent.MOUSE_MOVE,handler_zoommove);
                        //根据矩形框计算缩放范围)
                        if(Math.abs(event.localX-md_x)>10 && Math.abs(event.localY-md_y)>10)  //拖动框到一定大小再缩放,防止点击即缩放
                        {
                            //显示矩形范围  bounds需要左下和右上坐标,画图记忆的是左上和右下坐标
                            var map_zuoxia:Pixel=new Pixel(md_x,event.localY);
                            var map_youshang:Pixel=new Pixel(event.localX,md_y);
                            var loc_zuoxia:Location=map1.map.getLocationFromMapPx(map_zuoxia,map1.map.resolution);
                            var loc_youshang:Location=map1.map.getLocationFromMapPx(map_youshang,map1.map.resolution);
                            //Alert.show(loc_zuoxia.x + "," + loc_zuoxia.y);
                            var bds:Bounds=new Bounds(loc_zuoxia.x,loc_zuoxia.y,loc_youshang.x,loc_youshang.y,map1.map.projection);
                            map1.map.zoomToExtent(bds);
                        }
                    }
                }

            }


            private function handler_zoommove(event:MouseEvent):void
            {
                if(opemode==13)
                {                
                    if(event.type==MouseEvent.MOUSE_MOVE)
                    {
                        if(event.stageX!=md_x)
                        {
                            mysprite.graphics.clear();
                            mysprite.graphics.lineStyle(2,0xFF0000);
                            
                            mysprite.graphics.beginFill(0x0000FF,0.2);
                            mysprite.graphics.drawRect(md_x, md_y, event.localX-md_x,  event.localY-md_y);
                            mysprite.graphics.endFill();        
                        }
                    }
                }
            }
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值