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 。结合raphael插件、highcharts插件。
matlab工具箱系列-chinamap中国地图数据工具箱(大陆地区)
mapinfor离线地图 包含31个省市自治区的省界,以及这31个省市自治区的市界、县界及其名称等,非常详细
从阿里云地图选择器上查询得到的中国省市县(一共369个json文件)的地图json数据。...参考格式部分如下:{"features":[{"type":"Feature","properties":{"adcode":110000,"name":"北京市","center":[116.405285,39....
绘制中国地图,并根据站点位置信息标注站点。
中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的中国 地图 Chinamap svg 格式的
这是一个非常简单的demo,完全是用Echarts实现的,因此对于初学者也适用,采用vscode打开,(受访问本地json数据影响,没有安装live server插件的需要先安装该插件,不然会报跨域问题)
网上找的资源下载,放在这里希望做文档收集,也希望可以帮到大家
echarts 地图json
运用迈普科学技术97光学和视觉的一个交汇,开发资源的交流,特别强大
chinamap.gif
中国各省(港澳不单列) china_prov.lst.txt 各省临接矩阵(两个文件格式不同,但...china_map.arr.txt china_map.csv.txt 中国分省纯色地图(可填色) china.png 可以用来做最短路和四色问题的测试数据
中国矢量地图,2018年4月版本,使用前请查看license
Axure元件库。
chinamap.rar
china map with div and css
ChinaMap.7z
39 chinamap中国地图数据工具箱(大陆地区) 40 2D GaussFit高斯拟合工具箱 41 dijkstra最小成本路径算法 42 多维数据快速矩阵乘法 43 约束粒子群优化算法 44 脑MRI肿瘤的检测与分类 45 Matlab数值分析算法程序 46 ...