倒影挡住地图闪动,有没有解决方法?
时间:2011-07-28
来源:互联网
如题。
ChinaMap.rar (216.11 KB)
复制内容到剪贴板
{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.GradientType;
import flash.events.*;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.utils.getTimer;
import LoadXML;
import flash.net.URLRequest;
import flash.text.TextFormat;
public class map_china extends MovieClip
{
private var sp:Sprite = new Sprite ;
public var stagewidth:int = stage.stageWidth;//舞台宽度;
public var stageheight:int = stage.stageHeight;//舞台高度;
private var zu:Array;//省名组;
private var mcObj = {};
private var b_x = 0.425531914893617;
private var b_y = 0.414634146341463;
private var sdA = 5;
private var myxml:LoadXML;
private var xml:XML;
private var xmlList:XMLList;
private var news:NewList;
private var arr:Array;
private var txtbg:MovieClip = new txt_bg ;//数据显示mc
public function map_china()
{
stage.showDefaultContextMenu = false;//禁止右键;
zu = [{name:"hainan",url:"21"},{name:"aomen",url:"34"},{name:"xianggang",url:"33"},{name:"taiwan",url:"24"},{name:"guangxi",url:"20"},{name:"guangdong",url:"19"},{name:"yunnan",url:"26"},{name:"fujian",url:"11"},{name:"guizhou",url:"25"},{name:"hunan",url:"18"},{name:"jiangxi",url:"12"},{name:"zhejiang",url:"9"},{name:"chongqing",url:"23"},{name:"hubei",url:"17"},{name:"sichuan",url:"22"},{name:"anhui",url:"10"},{name:"shanghai",url:"7"},{name:"xizang",url:"27"},{name:"henan",url:"14"},{name:"jiangsu",url:"8"},{name:"shanxi1",url:"28"},{name:"qinghai",url:"30"},{name:"shandong",url:"13"},{name:"ningxia",url:"31"},{name:"shanxi",url:"4"},{name:"hebei",url:"3"},{name:"tianjin",url:"2"},{name:"gansu",url:"29"},{name:"neimenggu",url:"15"},{name:"beijing",url:"1"},{name:"liaoning",url:"5"},{name:"xinjiang",url:"32"},{name:"jilin",url:"6"},{name:"heilongjiang",url:"16"}];
for (var k:int = 0; k < zu.length; k++)
{
mcObj[zu[k].name] = {name:zu[k].name,ur:zu[k].url,mapmc:mc_dt.map_mc[zu[k].name],txtmc:mc_dt.txt_mc[zu[k].name]};
mcObj[zu[k].name].mapmc.alpha = 0;
}
myxml = new LoadXML("data.xml",XML_Loaded);//"dataXML.asp?t="+Math.random() * Number(getTimer())//"data.xml"
}
//处理XML;
private function XML_Loaded(p_e:Event)
{
//XML加载,会调用这个方法
//trace(xmlList);
if (p_e.target.err == null)
{
for (var n:int = 0; n < zu.length; n++)
{
mcObj[zu[n].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,lineBegin);
mcObj[zu[n].name].mapmc.addEventListener(MouseEvent.MOUSE_OUT,lineEnd);
}
//var totalcount:int = xml.descendants("datafs").length();
xml = p_e.target.xml;
xmlList = xml.item;
for (var i:int = 0; i < zu.length; i++)
{
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,addColor);
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OUT,removeColor);
}
}
else
{
mc_dt.addChild(txtbg);
//加载错误数据显示mc;
txtbg.err_txt.text = p_e.target.err;
}
}
private function addColor(e:Event)
{
//mouseover变色
addChild(txtbg);//加载数据显示mc;
txtbg.alpha = 1;
//var colorTan:ColorTransform = new ColorTransform(1,1,1,1,Math.random()*510-255,Math.random()*510-255,Math.random()*510-255,0);
////设置MC的颜色转换(红绿蓝透明乘数值都为1,红绿蓝偏移量为-255-255之间的随机数,透明度偏移量为0)
var colorTan:ColorTransform = new ColorTransform ;
colorTan.color = 0xef3207;
arr = new Array ;
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
mcObj[zu[i].name].mapmc.parent.buttonMode = true;
mcObj[zu[i].name].txtmc.parent.buttonMode = true;
//trace(mcObj[zu[j].name].mapmc.x+mcObj[zu[j].name].mapmc.parent.x);
txtbg.x = mcObj[zu[i].name].mapmc.x + mcObj[zu[i].name].mapmc.parent.x;
txtbg.y = mcObj[zu[i].name].mapmc.y + mcObj[zu[i].name].mapmc.parent.y;
if (txtbg.x + txtbg.width + 50 > mouseX)
{
txtbg.x = txtbg.x - 150;
}
if (txtbg.x < 0)
{
txtbg.x = 0;
}
if (txtbg.x + txtbg.width > stagewidth)
{
txtbg.x = stagewidth - txtbg.width;
}
if (txtbg.y + txtbg.height + 50 > mouseY)
{
txtbg.y = txtbg.y - 100;
}
if (txtbg.y < 0)
{
txtbg.y = 0;
}
//处理XML;
if (xml.item[mcObj[zu[i].name].ur - 1].datafs.length() != 0)
{
for (var n:int = 0; n < xml.item[mcObj[zu[i].name].ur - 1].datafs.length(); n++)
{
news = new NewList ;
news.x = 2;
news.y = 25 + 25 * n;
news.title.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dwmc[n];
news.dwid.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dwid[n];
news.dqid.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dqid[n];
news.xmmc.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ xmmc[n];
news.mcval.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ mcval[n];
txtbg.addChild(news);
arr.push(news);
}
}
else
{
news = new NewList ;
news.x = 2;
news.y = 25 + 25 * n;
news.title.text = "此地区没有筛查中心!!";
news.title.setTextFormat(new TextFormat("",15,0xff0000));
txtbg.addChild(news);
arr.push(news);
}
if (txtbg.height > txtbg.touying.height)
{
txtbg.touying.height = txtbg.height + 5;
}
else
{
txtbg.height = txtbg.touying.height;
}
mcObj[zu[i].name].mapmc.addEventListener(Event.ENTER_FRAME,addAlpha);
function addAlpha(e:Event)
{
e.target.transform.colorTransform = colorTan;
e.target._alpha = e.target._alpha + 0.2;
if (e.target._alpha >= 1)
{
e.target._alpha = 1;
}
}
mcObj[zu[i].name].txtmc.addEventListener(Event.ENTER_FRAME,addtxtAlpha);
function addtxtAlpha(e:Event)
{
e.target.alpha = 0.7;
}
}
}
}
private function removeColor(e:Event)
{
txtbg.alpha = 0;
txtbg.touying.height = 126;
//mouseout变回原样
for (var j:int = 0; j < zu.length; j++)
{
if (mcObj[zu[j].name].name == e.currentTarget.name)
{
if (arr!=null&&arr.length > 0)
{
for (var i:int = 0; i < arr.length; i++)
{
if (txtbg.contains(arr[i]))
{
txtbg.removeChild(arr[i]);
}
}
arr = [];
}
mcObj[zu[j].name].mapmc.addEventListener(Event.ENTER_FRAME,removeAlpha);
function removeAlpha(e:Event)
{
e.target.alpha = 0;
}
mcObj[zu[j].name].txtmc.addEventListener(Event.ENTER_FRAME,addtxtAlpha);
function addtxtAlpha(e:Event)
{
e.target.alpha = 1;
}
}
}
}
//绘制倒影;
private function lineBegin(e:MouseEvent):void
{
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,lineDraw);
}
}
}
private function lineDraw(e:MouseEvent):void
{
var mcdtx:int = mc_dt.x + 5;
var mcdty:int = mc_dt.y + 5;
var gpx:int = txtbg.x + 2;
var gpy:int = txtbg.y + txtbg.height - 2;
var gpcx:int;
//清除绘制的倒影;
sp.graphics.clear();
//绘制倒影定义;
var type:String = GradientType.LINEAR;
var color:Array = [16777215,16777215];
var alphaAr1:Array = [0.2,0.6];
var alphaAr2:Array = [0.6,0.2];
var rotios:Array = [0,255];
var matix:Matrix = new Matrix ;
//开始绘制的倒影;
sp.graphics.beginGradientFill(type,color,alphaAr1,rotios,matix);
sp.graphics.moveTo(gpx,gpy);
//graphics.lineTo(e.target.x,e.target.y);
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
sp.graphics.lineTo(mcObj[zu[i].name].txtmc.x + mcdtx,mcObj[zu[i].name].txtmc.y + mcdty);
}
}
sp.graphics.lineTo(gpx + txtbg.width - 6,gpy);
sp.graphics.lineTo(gpx,gpy);
sp.graphics.beginGradientFill(type,color,alphaAr2,rotios,matix);
if (mouseX > mc_dt.width / 2 && mouseX < mc_dt.width)
{
gpcx = gpx + txtbg.width - 4;
}
else
{
gpcx = gpx;
}
sp.graphics.moveTo(gpcx - 2,gpy);
//graphics.lineTo(e.target.x,e.target.y);
for (var j:int = 0; j < zu.length; j++)
{
if (mcObj[zu[j].name].name == e.currentTarget.name)
{
sp.graphics.lineTo(mcObj[zu[j].name].txtmc.x + mcdtx,mcObj[zu[j].name].txtmc.y + mcdty);
}
}
sp.graphics.lineTo(gpcx,gpy - txtbg.height);
sp.graphics.lineTo(gpcx,gpy);
sp.graphics.endFill();
addChild(sp);
sp.buttonMode = false;
sp.mouseChildren = false;
}
private function lineEnd(e:MouseEvent):void
{
//清除绘制的倒影;
sp.graphics.clear();
}
}
}
源文件: 代码:
package{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.GradientType;
import flash.events.*;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.utils.getTimer;
import LoadXML;
import flash.net.URLRequest;
import flash.text.TextFormat;
public class map_china extends MovieClip
{
private var sp:Sprite = new Sprite ;
public var stagewidth:int = stage.stageWidth;//舞台宽度;
public var stageheight:int = stage.stageHeight;//舞台高度;
private var zu:Array;//省名组;
private var mcObj = {};
private var b_x = 0.425531914893617;
private var b_y = 0.414634146341463;
private var sdA = 5;
private var myxml:LoadXML;
private var xml:XML;
private var xmlList:XMLList;
private var news:NewList;
private var arr:Array;
private var txtbg:MovieClip = new txt_bg ;//数据显示mc
public function map_china()
{
stage.showDefaultContextMenu = false;//禁止右键;
zu = [{name:"hainan",url:"21"},{name:"aomen",url:"34"},{name:"xianggang",url:"33"},{name:"taiwan",url:"24"},{name:"guangxi",url:"20"},{name:"guangdong",url:"19"},{name:"yunnan",url:"26"},{name:"fujian",url:"11"},{name:"guizhou",url:"25"},{name:"hunan",url:"18"},{name:"jiangxi",url:"12"},{name:"zhejiang",url:"9"},{name:"chongqing",url:"23"},{name:"hubei",url:"17"},{name:"sichuan",url:"22"},{name:"anhui",url:"10"},{name:"shanghai",url:"7"},{name:"xizang",url:"27"},{name:"henan",url:"14"},{name:"jiangsu",url:"8"},{name:"shanxi1",url:"28"},{name:"qinghai",url:"30"},{name:"shandong",url:"13"},{name:"ningxia",url:"31"},{name:"shanxi",url:"4"},{name:"hebei",url:"3"},{name:"tianjin",url:"2"},{name:"gansu",url:"29"},{name:"neimenggu",url:"15"},{name:"beijing",url:"1"},{name:"liaoning",url:"5"},{name:"xinjiang",url:"32"},{name:"jilin",url:"6"},{name:"heilongjiang",url:"16"}];
for (var k:int = 0; k < zu.length; k++)
{
mcObj[zu[k].name] = {name:zu[k].name,ur:zu[k].url,mapmc:mc_dt.map_mc[zu[k].name],txtmc:mc_dt.txt_mc[zu[k].name]};
mcObj[zu[k].name].mapmc.alpha = 0;
}
myxml = new LoadXML("data.xml",XML_Loaded);//"dataXML.asp?t="+Math.random() * Number(getTimer())//"data.xml"
}
//处理XML;
private function XML_Loaded(p_e:Event)
{
//XML加载,会调用这个方法
//trace(xmlList);
if (p_e.target.err == null)
{
for (var n:int = 0; n < zu.length; n++)
{
mcObj[zu[n].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,lineBegin);
mcObj[zu[n].name].mapmc.addEventListener(MouseEvent.MOUSE_OUT,lineEnd);
}
//var totalcount:int = xml.descendants("datafs").length();
xml = p_e.target.xml;
xmlList = xml.item;
for (var i:int = 0; i < zu.length; i++)
{
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,addColor);
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OUT,removeColor);
}
}
else
{
mc_dt.addChild(txtbg);
//加载错误数据显示mc;
txtbg.err_txt.text = p_e.target.err;
}
}
private function addColor(e:Event)
{
//mouseover变色
addChild(txtbg);//加载数据显示mc;
txtbg.alpha = 1;
//var colorTan:ColorTransform = new ColorTransform(1,1,1,1,Math.random()*510-255,Math.random()*510-255,Math.random()*510-255,0);
////设置MC的颜色转换(红绿蓝透明乘数值都为1,红绿蓝偏移量为-255-255之间的随机数,透明度偏移量为0)
var colorTan:ColorTransform = new ColorTransform ;
colorTan.color = 0xef3207;
arr = new Array ;
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
mcObj[zu[i].name].mapmc.parent.buttonMode = true;
mcObj[zu[i].name].txtmc.parent.buttonMode = true;
//trace(mcObj[zu[j].name].mapmc.x+mcObj[zu[j].name].mapmc.parent.x);
txtbg.x = mcObj[zu[i].name].mapmc.x + mcObj[zu[i].name].mapmc.parent.x;
txtbg.y = mcObj[zu[i].name].mapmc.y + mcObj[zu[i].name].mapmc.parent.y;
if (txtbg.x + txtbg.width + 50 > mouseX)
{
txtbg.x = txtbg.x - 150;
}
if (txtbg.x < 0)
{
txtbg.x = 0;
}
if (txtbg.x + txtbg.width > stagewidth)
{
txtbg.x = stagewidth - txtbg.width;
}
if (txtbg.y + txtbg.height + 50 > mouseY)
{
txtbg.y = txtbg.y - 100;
}
if (txtbg.y < 0)
{
txtbg.y = 0;
}
//处理XML;
if (xml.item[mcObj[zu[i].name].ur - 1].datafs.length() != 0)
{
for (var n:int = 0; n < xml.item[mcObj[zu[i].name].ur - 1].datafs.length(); n++)
{
news = new NewList ;
news.x = 2;
news.y = 25 + 25 * n;
news.title.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dwmc[n];
news.dwid.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dwid[n];
news.dqid.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ dqid[n];
news.xmmc.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ xmmc[n];
news.mcval.text = xml.item[mcObj[zu[i].name].ur - 1].datafs. @ mcval[n];
txtbg.addChild(news);
arr.push(news);
}
}
else
{
news = new NewList ;
news.x = 2;
news.y = 25 + 25 * n;
news.title.text = "此地区没有筛查中心!!";
news.title.setTextFormat(new TextFormat("",15,0xff0000));
txtbg.addChild(news);
arr.push(news);
}
if (txtbg.height > txtbg.touying.height)
{
txtbg.touying.height = txtbg.height + 5;
}
else
{
txtbg.height = txtbg.touying.height;
}
mcObj[zu[i].name].mapmc.addEventListener(Event.ENTER_FRAME,addAlpha);
function addAlpha(e:Event)
{
e.target.transform.colorTransform = colorTan;
e.target._alpha = e.target._alpha + 0.2;
if (e.target._alpha >= 1)
{
e.target._alpha = 1;
}
}
mcObj[zu[i].name].txtmc.addEventListener(Event.ENTER_FRAME,addtxtAlpha);
function addtxtAlpha(e:Event)
{
e.target.alpha = 0.7;
}
}
}
}
private function removeColor(e:Event)
{
txtbg.alpha = 0;
txtbg.touying.height = 126;
//mouseout变回原样
for (var j:int = 0; j < zu.length; j++)
{
if (mcObj[zu[j].name].name == e.currentTarget.name)
{
if (arr!=null&&arr.length > 0)
{
for (var i:int = 0; i < arr.length; i++)
{
if (txtbg.contains(arr[i]))
{
txtbg.removeChild(arr[i]);
}
}
arr = [];
}
mcObj[zu[j].name].mapmc.addEventListener(Event.ENTER_FRAME,removeAlpha);
function removeAlpha(e:Event)
{
e.target.alpha = 0;
}
mcObj[zu[j].name].txtmc.addEventListener(Event.ENTER_FRAME,addtxtAlpha);
function addtxtAlpha(e:Event)
{
e.target.alpha = 1;
}
}
}
}
//绘制倒影;
private function lineBegin(e:MouseEvent):void
{
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
mcObj[zu[i].name].mapmc.addEventListener(MouseEvent.MOUSE_OVER,lineDraw);
}
}
}
private function lineDraw(e:MouseEvent):void
{
var mcdtx:int = mc_dt.x + 5;
var mcdty:int = mc_dt.y + 5;
var gpx:int = txtbg.x + 2;
var gpy:int = txtbg.y + txtbg.height - 2;
var gpcx:int;
//清除绘制的倒影;
sp.graphics.clear();
//绘制倒影定义;
var type:String = GradientType.LINEAR;
var color:Array = [16777215,16777215];
var alphaAr1:Array = [0.2,0.6];
var alphaAr2:Array = [0.6,0.2];
var rotios:Array = [0,255];
var matix:Matrix = new Matrix ;
//开始绘制的倒影;
sp.graphics.beginGradientFill(type,color,alphaAr1,rotios,matix);
sp.graphics.moveTo(gpx,gpy);
//graphics.lineTo(e.target.x,e.target.y);
for (var i:int = 0; i < zu.length; i++)
{
if (mcObj[zu[i].name].name == e.currentTarget.name)
{
sp.graphics.lineTo(mcObj[zu[i].name].txtmc.x + mcdtx,mcObj[zu[i].name].txtmc.y + mcdty);
}
}
sp.graphics.lineTo(gpx + txtbg.width - 6,gpy);
sp.graphics.lineTo(gpx,gpy);
sp.graphics.beginGradientFill(type,color,alphaAr2,rotios,matix);
if (mouseX > mc_dt.width / 2 && mouseX < mc_dt.width)
{
gpcx = gpx + txtbg.width - 4;
}
else
{
gpcx = gpx;
}
sp.graphics.moveTo(gpcx - 2,gpy);
//graphics.lineTo(e.target.x,e.target.y);
for (var j:int = 0; j < zu.length; j++)
{
if (mcObj[zu[j].name].name == e.currentTarget.name)
{
sp.graphics.lineTo(mcObj[zu[j].name].txtmc.x + mcdtx,mcObj[zu[j].name].txtmc.y + mcdty);
}
}
sp.graphics.lineTo(gpcx,gpy - txtbg.height);
sp.graphics.lineTo(gpcx,gpy);
sp.graphics.endFill();
addChild(sp);
sp.buttonMode = false;
sp.mouseChildren = false;
}
private function lineEnd(e:MouseEvent):void
{
//清除绘制的倒影;
sp.graphics.clear();
}
}
}

作者: xuxiong 发布时间: 2011-07-28
在构造函数中加一行
sp.mouseChildren =sp.mouseEnabled =false;
sp.mouseChildren =sp.mouseEnabled =false;
作者: flash023 发布时间: 2011-07-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28