package {
import event.MapEvent;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
import flash.geom.ColorTransform;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.StaticText;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(width="600",height="500",frameRate="25",backgroundColor="#FFFFFF")]
public class ChinaMap extends Sprite {
private var mapConfig:Object;
private var mapBackGroud:MapBackgound;
private var mapArea:MapArea;
private var mapXML:XMLList;
private var mapTip:MapTip;
private var tipShandow:Sprite;
private var wrapperFunction:String;
public function ChinaMap(){
mapConfig = new Object();
mapConfig.title = loaderInfo.parameters.title;
wrapperFunction = loaderInfo.parameters.jsHandler;
/*UI*/
var mapLoading:MapLoading = new MapLoading();
addChild(mapLoading);
var xmlLoader:URLLoader = new URLLoader();
var xmlAdress:String = (loaderInfo.parameters.xmlurl != null)?loaderInfo.parameters.xmlurl:"data/d.xml";
xmlLoader.addEventListener(Event.COMPLETE,function(e:Event):void{
mapXML = new XML(e.target.data).area;
removeChild(mapLoading);
drawUI();
});
xmlLoader.load(new URLRequest(xmlAdress));
}
private function drawUI():void {
mapBackGroud = new MapBackgound();
mapBackGroud.title = (mapConfig.title == null)?"you need set title":mapConfig.title;
addChild(mapBackGroud);
mapArea = new MapArea();
mapArea.x = mapArea.y = 20;
addChild(mapArea);
stopAll(mapArea.map);
registAction(mapArea.map);
tipShandow = new Sprite();
addChild(tipShandow);
mapTip = new MapTip();
addChild(mapTip);
mapTip.visible = false;
}
private function registAction(c:DisplayObjectContainer):void {
var me:DisplayObject;
var meTf:DisplayObject;
var meTf1:DisplayObject;
for(var i:uint = 0; i<c.numChildren; i++) {
me = c.getChildAt(i);
if(me is MovieClip && me.name != "bg") {
me.alpha = 0.5;
f:for each(var node:XML in mapXML){
if(node.@id == me.name) {
me.alpha = 1;
(me as MovieClip).title = node.@title;
(me as MovieClip).value = node.@value;
(me as MovieClip).navUrl = node.@url;
(me as MovieClip).navTarget = node.@target;
(me as MovieClip).buttonMode = true;
var color:ColorTransform = new ColorTransform;
// var color24:Number=0x00 << 16 | Math.random()*0xff << 8 | 0x00;
// color.color=color24;
chanceColor(color);
(me as MovieClip).transform.colorTransform=color;
(me as MovieClip).addEventListener(MouseEvent.MOUSE_OVER,mapOverHandler);
(me as MovieClip).addEventListener(MouseEvent.MOUSE_OUT,mapOutHandler);
(me as MovieClip).addEventListener(MouseEvent.CLICK,mapClipHandler);
break f;
}
}
for(var k:uint = 0; k<(me as MovieClip).numChildren;k++){
meTf = (me as MovieClip).getChildAt(k);
if(meTf is MovieClip){
meTf1 = (meTf as MovieClip).getChildAt(0);
if(meTf1 is StaticText){
(meTf as MovieClip).removeChildAt(0);
}else{
if(meTf1 is MovieClip){
if(me.name=="gansu"){
for(var j:uint = 0; j<(meTf1 as MovieClip).numChildren;j++){
var meTf3:DisplayObject = (meTf1 as MovieClip).getChildAt(j);
if(meTf3 is StaticText){
(meTf1 as MovieClip).removeChild(meTf3);
}
}
}else{
var meTf2
isplayObject = (meTf1 as MovieClip).getChildAt(0);
if(meTf2 is StaticText){
(meTf1 as MovieClip).removeChildAt(0);
}
}
}
}
}
}
}
}
function chanceColor(c:ColorTransform):void{
var color24:Number=0x00 << 16 | Math.random()*0xff << 8 | 0x00;
c.color=color24;
}
function chanceColor11(c:ColorTransform):void{
var n:Number=Math.random();
if(n<.3) c.redOffset=255;
else if(n<.6) c.greenOffset=255;
else{
c.redOffset=255;
c.greenOffset=255;
}
}
function mapOverHandler(e:MouseEvent):void {
(e.currentTarget as MovieClip).gotoAndStop(2);
showTip((e.currentTarget as MovieClip),(e.currentTarget as MovieClip).value);
}
function mapOutHandler(e:MouseEvent):void {
(e.currentTarget as MovieClip).gotoAndStop(1);
if(mouseX < mapTip.x || mouseX > (mapTip.x+mapTip.width) || mouseY < mapTip.y || mouseY > (mapTip.y+mapTip.height)) {
hideTip();
}
}
function mapClipHandler(e:MouseEvent):void {
var me:MovieClip = e.currentTarget as MovieClip;
if(me.navUrl != null) {
navigateToURL(new URLRequest(me.navUrl),me.navTarget);
}
var clickEvent:MapEvent = new MapEvent(MapEvent.ITEMCLICK,true,true);
clickEvent.value = me.name;
dispatchEvent(clickEvent);
if (ExternalInterface.available) {
try {
var t:Object = new Object();
t.value = me.name;
ExternalInterface.call(wrapperFunction,t);
} catch(err:Error) {
trace(err);
}
}
}
}
private function showTip(mc:MovieClip,t:String):void {
mapTip.addEventListener(Event.ENTER_FRAME,moveTip);
mapTip.visible = true;
mapTip.t.htmlText = t;
}
private function hideTip():void {
mapTip.visible=false;
mapTip.t.text="";
mapTip.removeEventListener(Event.ENTER_FRAME,moveTip);
}
private function moveTip(e:Event):void {
e.currentTarget.x = mouseX+10;
e.currentTarget.y = mouseY+10;
if((e.currentTarget.x+e.currentTarget.width) > stage.stageWidth) {
e.currentTarget.x = stage.stageWidth - e.currentTarget.width;
}
}
private function stopAll(c:DisplayObjectContainer):void {
var me:DisplayObject;
for(var i:uint = 0; i<c.numChildren; i++) {
me = c.getChildAt(i);
if(me is MovieClip) {
(me as MovieClip).stop();
}
}
}
}
}
分享到:
相关推荐
China Map China Map China Map China Map
在"chinamap.rar_chinamap_matlab"这个压缩包里,包含了几个关键文件,用于实现这一目的。 首先,"chinamap.m"是主程序文件,它包含了绘制中国地图和标注站点的核心代码。MATLAB提供了`geoshow`函数来显示地理数据...
【标题】"chinamap_地图_中国矢量地图_goolglechinamap_shp_" 指的是一款专门针对中国的高精度矢量地图资源,适用于各种地理信息系统(GIS)应用。这个标题揭示了几个关键点:首先,“chinamap”明确了这是一份关于...
【标题】"ChinaMap实例源码"涉及到的是地图可视化技术的应用,主要结合了Raphael插件和Highcharts插件来实现。在中国地图的绘制和数据展示方面,这两个工具提供了强大的功能。 【Raphael插件】Raphael是一个...
中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的
《chinamap离线地图——探索地理信息与GIS技术的应用》 在当今信息化时代,地图不再仅仅是纸质形式的存在,而是发展成了数字形态,为我们的生活提供了极大的便利。"chinamap离线地图.rar"就是一个典型例子,它展示...
"chinamap_matlab地图数据_工具箱_matlab_" 是一个专门为MATLAB用户设计的工具箱,主要用于绘制和处理中国地图数据。这个工具箱包含了丰富的中国地理信息,涵盖了大陆地区的省份、城市、县等各级行政区域,使得在...
"调用js地图,兼容各个浏览器chinaMap"这个主题关注的是如何使用JavaScript来创建一个兼容多种浏览器的地图功能,特别是针对中国的地理区域。这里我们将深入探讨这个话题,并基于提供的文件`index.html`、`raphael.js...
标题中的"china_map1.zip"是一个压缩包文件,其中包含了用于在MATLAB环境中绘制中国地图的相关资源。"china map download"表明这个压缩包是下载的,可能是从互联网上获取的,目的是供用户在自己的MATLAB环境中使用。...
echarts 地图json
中国各省(港澳不单列) china_prov.lst.txt 各省临接矩阵(两个文件格式不同,但...china_map.arr.txt china_map.csv.txt 中国分省纯色地图(可填色) china.png 可以用来做最短路和四色问题的测试数据
从阿里云地图选择器上查询得到的中国省市县(一共369个json文件)的地图json数据。...参考格式部分如下:{"features":[{"type":"Feature","properties":{"adcode":110000,"name":"北京市","center":[116.405285,39....
标题中的"chinamap.rar"表明这是一个压缩文件,可能包含了与中国的地图数据或者与地图相关的程序、图像等资源。在IT领域,这类数据通常用于地理信息系统(GIS)、数据分析或者地图可视化项目。.rar格式是一种流行的...
【标题】"Chrome extension of China Map" 这篇内容主要围绕一个名为“China Map”的Chrome浏览器扩展进行,它是一款专为Chrome用户设计的地图应用插件。Chrome扩展是基于浏览器的JavaScript、HTML和CSS等技术构建...
这是一个非常简单的demo,完全是用Echarts实现的,因此对于初学者也适用,采用vscode打开,(受访问本地json数据影响,没有安装live server插件的需要先安装该插件,不然会报跨域问题)
运用迈普科学技术97光学和视觉的一个交汇,开发资源的交流,特别强大
chinamap.gif
"ChinaMap.7z" 是一个压缩文件,包含了与地理相关的数据,主要用于描述中国的行政区域划分以及地理位置。该压缩包内包含了一系列以 .dbf、.shp 和 .shx 为扩展名的文件,这些都是GIS(地理信息系统)中常用的数据...
Axure元件库。