XML辅助Flash互动电子地图标注地名
在上一讲中我们介绍了制作一个最为简单的Flash电子地图的基本步骤(《Flash互动电子地图制作手册——入门实例》)。但对于制作数据量较大的大型城市地图,直接在Flash环境中手动创建地名标注内容不仅工作量巨大,而且维护更新非常不便,这样就必须借助外部数据文件来辅助完成其中的地名标注工作。当然,调用数据文件的方法很多,我们这里介绍一种较为简单的,即在FLASH中调用外部XML数据文件。
Flash互动电子地图制作手册——入门实例 XML辅助Flash互动电子地图标注地名 用trace函数实现互动地图后台快速标注地名 Flash+ASP实现电子互动地图在线标注功能 Flash+XML实现电子地图查询及定位功能 |
既然涉及XML文件,就有必要对XML有一个初步的了解。
一、初识XML
1、什么是XML?
XML 是英文Extensible Markup Language的缩写,中文意为可扩展的标记语言。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
2、XML文件式样
以下为一个XML文件结构,有些类似HTML语言:
<?xml version="1.0" encoding="utf-8" ?> <countrydata> <state id="range"> <data>0 - 33</data> <color>fed976</color> </state> <state id="range"> <data>34 - 66</data> <color>feb24c</color> </state> <state id="range"> <data>67 - 99</data> <color>fd8d3c</color> </state> </countrydata> |
二、Flash调用XML文件的方法
Flash中的ActionScript2.0关于调用XML的全局函数与方法属性较多,以下只介绍本例中涉及的内容:
1、建立XML对象:
var myXML = new XML();
2、引用XML文件:
myXML.load("data.xml");
3、忽略空格:
myXML.ignoreWhite = true;//默认的为false
4、处理XML对象的load(XML.load 方法)
public load(url:String) : Boolean
从指定的 URL 中加载 XML 文档,并使用下载的 XML 数据替换指定 XML 对象的内容。该 URL 是相对 URL,并使用 HTTP 进行调用。加载过程是异步的;它不会在执行 load() 方法后立即结束。
执行 load() 方法时,XML 对象的 loaded 属性被设置为 false。在 XML 数据下载完毕后,loaded 属性被设置为 true,并调用 onLoad 事件处理函数。直到 XML 数据完全下载后,才开始分析。如果该 XML 对象以前包含任何 XML 树,它们将被放弃。
您可以定义一个在调用 XML 对象的 onLoad 事件处理函数时执行的自定义函数。
5、处理XML对象的onLoad(XML.onLoad 处理函数)
onLoad = function(success:Boolean) {}
收到来自服务器的 XML 文档时由 Flash Player 调用。如果成功接收了 XML 文档,则 success 参数为 true。如果未收到该文档,或从服务器接收响应时出现错误,则 success 参数为 false。默认情况下,此方法的实现不处于活动状态。若要覆盖默认实现,必须指定一个包含自定义动作的函数。
第1页:初识XML、Flash调用XML文件的方法 第2页:实例制作 三、实例制作
在初步了解了以上XML的基础后,我们就可以紧接上一例的步骤完成地名标注工作:
1、创建用于地名标注的XML文件:
首先我们要创建一个包含关于需要标注的地名信息文件,即包含地名称、地名坐标等基本信息。本例中我们只创建一个示范性的地名信息数据文件,其格式为XML文件格式,内容如下:
<?xml version="1.0" encoding="iso-8859-1" ?> <map> <r><n>大清湖</n><x>37</x><y>264</y></r> <r><n>环</n><x>154</x><y>67</y></r> <r><n>城</n><x>164</x><y>67</y></r> <r><n>西</n><x>175</x><y>69</y></r> <r><n>路</n><x>184</x><y>72</y></r> <r><n>环</n><x>289</x><y>101</y></r> <r><n>城</n><x>297</x><y>107</y></r> <r><n>东</n><x>309</x><y>114</y></r> <r><n>路</n><x>321</x><y>117</y></r> <r><n>中</n><x>231</x><y>95</y></r> <r><n>心</n><x>232</x><y>114</y></r> <r><n>南</n><x>233</x><y>135</y></r> <r><n>路</n><x>234</x><y>158</y></r> <r><n>中</n><x>229</x><y>18</y></r> <r><n>心</n><x>233</x><y>34</y></r> <r><n>北</n><x>235</x><y>47</y></r> <r><n>路</n><x>234</x><y>58</y></r> <r><n>★某某市易做图</n><x>239</x><y>88</y></r> <r><n>●城中影剧院</n><x>271</x><y>84</y></r> <r><n>●新华书店</n><x>171</x><y>60</y></r> <r><n>城</n><x>92</x><y>87</y></r> <r><n>环</n><x>104</x><y>98</y></r> <r><n>一</n><x>121</x><y>110</y></r> <r><n>路</n><x>134</x><y>124</y></r> <r><n>大清湖旅游区</n><x>36</x><y>223</y></r> <r><n>▲百丈峰</n><x>124</x><y>30</y></r> <r><n>◎东城新村</n><x>340</x><y>158</y></r> <r><n>◎南城新村</n><x>287</x><y>189</y></r> <r><n>※新颀花园</n><x>292</x><y>70</y></r> <r><n>人民公园</n><x>144</x><y>42</y></r> <r><n>动物园</n><x>140</x><y>105</y></r> <r><n>东城广场</n><x>342</x><y>73</y></r> <r><n>※百天花园</n><x>92</x><y>55</y></r> <r><n>※花峰小区</n><x>346</x><y>189</y></r> <r><n>◎高名新村</n><x>375</x><y>146</y></r> <r><n>※风台花苑</n><x>210</x><y>185</y></r> <r><n>▌城中大厦</n><x>219</x><y>111</y></r> <r><n>▌佳好大楼</n><x>185</x><y>109</y></r> <r><n>▌天启工业大厦</n><x>122</x><y>63</y></r> <r><n>▌晨光商贸大厦</n><x>265</x><y>62</y></r> <r><n>▌华侨电子大厦</n><x>209</x><y>84</y></r> <r><n>▌佳好商城</n><x>196</x><y>49</y></r> </map> |
注:其中<n>与</n>项为地名名称;<x>122</x&