本文我们就动态柱状图表的制作原理做一个剖析。

num0=480&num1=320&num2=500&num3=200& //柱状高度来源
2、主场景第一帧上放四个实例名称分别是mc0、mc1、mc2、mc3的电影实例。
3、主场景第一帧上增加代码:
System.useCodepage = true;//除乱码
var xl = new LoadVars();//创建 LoadVars 对象的实例
xl.load("xl.txt");//引导外部文本中的变量
xl.onLoad = function(suc) {
if (suc) {
nums = [xl.num0, xl.num1, xl.num2, xl.num3];//外部文本中的变量存入数组中
}
};
for (var i = 0; i<=3; i++) {
_root["mc"+i]._yscale = 10;//初始缩放比例
_root["mx"+i] = _root["mc"+i]._x;//存贮初始坐标值
_root["my"+i] = _root["mc"+i]._yscale;//存贮初始缩放值
}
this.onEnterFrame = function() {
for (var i = 0; i<=3; i++) {
_root["mc"+i]._yscale = _root["my"+i]*nums[i];//显示缩放变化
_root.createEmptyMovClip("mytxt"+i, i*2);//创建电影实例四个用于下句中绑定库中的动态文本
_root["mytxt"+i].attachMovie("txtmc", "txt"+i, 1000, {_x:_root["mx"+i], _y:(Math.round(Number(_root["mc"+i]._y-nums[i]*(0.3))))});//
_root["mytxt"+i]["txt"+i].t.text = nums[i];//显示动态数值
}
};
1、端
首先创建如下界面,捕捉标注点的代码在上一讲中已经提到,本例只是除了地名名称之外,再增加一些基本的信息,方法雷同,这里就不再重复;最终将需要保存的代码赋给字符串变量SendData_srt。

图2 SWF文件界面1
点击看大图

图3 SWF文件界面2
以一个名为Link的变量来接受来自的消息。如果其值为1,表明与服务器端的连接成功。使用
LoadVars,再使用sendAndLoad方法将一个LoadVars的实体下的数据发送出去。
打开时间轴的动作面板,输入以下ActionScript代码:
function SendData():Void { //定义发送数据的函数
var SendData = new LoadVars(); //构造一个新的LoadVars对象
SendData.Check = 1; //设定Check的动作,用于服务器验证
SendData.data = SendData_srt; //将待发送的数据变量SendData_srt赋给data
output_txt.text = "请稍候……"; //状态文本显示为"请稍候……"
SendData.onLoad = function(success) { //验证和服务器连接的函数
if (success) { //如果和服务器成功连接
if (this.Link== "1") { //如果验证动作成功
output_txt.text = "成功标注!审核后即可生效。"; //状态文本显示为成功
}
}
else {
output_txt.text = "服务器忙,请稍后再试!";
//如果和服务器连接不成功则返回失败消
}
};
SendData.sendAndLoad("http://www.wanggesz.com/XMLData/Save.asp", SendData, "post");
//以post方式发送待保存数据
}
2、编写脚本(ASP)
创建一个ASP文件,其内容如下:
<%@Language="VBScript"%>
<%
Dim Check '定义Check变量,用来验证来自SWF文件的数据
Dim Link '定义Link变量,用来返回给SWF文件,表明成功
Dim data '定义data变量,用来接收来自SWF文件的待保存数据
set data = Request.Form("data") '接收来自SWF文件的待保存数据
set Check = Request.Form("Check") '验证来自SWF文件的数据
if Check = 1 Then '如果SWF文件身份正确
Link = 1 '将Link值设为1,表明通信成功
End if '结束if语句
Set xml=Server.CreateObject("Microsoft.XMLDOM")
'创建一个对象用以操作XML文件
xml.Async=False
xml.ValidateOnParse=False
xml.Load(server.mapPath("http://www.wanggesz.com/XMLData/data.xml"))
'加载xml文件
set newNode=mxml.createNode ("element", "data", "")
'创建新节点newNode,并命为为data
root.appendChild(newNode)
'在上面得到的加载进来的XML文件的根节点后追加一个新建的节点newNode,
Set objname = mxml.createAttribute("data")
'为新建的节点创建属性项objname.Text = data '为新建属性项添加属性值
xml.save(server.mapPath("http://www.wanggesz.com/XMLData/data.xml"))
'在指定的路径保存XML文件,
Response.write"Link"&Link '将Link=1返回给SWF文件
%>
这样我们依次完成了对地图的操作、地名的标注等功能;而在地图的使用过程中,用地名名称进行查询及定位是也一个必不可少的常用功能。
下一讲中我们学习电子互动地图中查询及定位功能的实现。


