对于制作数据量较大的大型城市地图,直接在flash环境中手动创建地名标注内容不仅工作量巨大,而且维护更新非常不便,这样就必须借助外部数据文件来辅助完成其中的地名标注工作。当然,调用数据文件的方法很多,我们这里介绍一种较为简单的,即在flash中调用外部xml数据文件。 一、初识xml 1、什么是xml? xml 是英文extensible markup language的缩写,中文意为可扩展的标记语言。xml是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。 2、xml文件式样 以下为一个xml文件结构,有些类似html语言: <?xml version=”1.0″ encoding=”utf-8″ ?> 二、flash调用xml文件的方法 flash中的actionscript2.0关于调用xml的全局函数与方法属性较多,以下只介绍本例中涉及的内容: 2、引用xml文件: 3、忽略空格: 4、处理xml对象的load(xml.load 方法) 从指定的 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 处理函数) 收到来自服务器的 xml 文档时由 flash player 调用。如果成功接收了 xml 文档,则 success 参数为 true。如果未收到该文档,或从服务器接收响应时出现错误,则 success 参数为 false。默认情况下,此方法的实现不处于活动状态。若要覆盖默认实现,必须指定一个包含自定义动作的函数。 三、实例制作 在初步了解了以上xml的基础后,我们就可以紧接上一例的步骤完成地名标注工作: 1、创建用于地名标注的xml文件: <?xml version=”1.0″ encoding=”iso-8859-1″ ?> 注:其中与项为地名名称;122与63项为地名标注的x轴与y轴坐标,至于其坐标值的得来将在以后的实例中详细讲解。 2、flash调用的代码 打开flash professional,在上一讲中的地图底图所在层的时间轴上,再补入以下actionscript代码: var road_xml:xml = new xml(); /建立xml对象 road_xml.load(“road.xml”); /调用xml文件: 注:其中xml文件的路径使用了相对路径,此路径是xml文件相对于调用flash文件的网页文件的路径,即在本例中,调用flash地图文件的网页文件必须与road.xml文件置于相同的路径下,否则flash将无法调用xml文件。 这样,flash文件只提供电子地图的基本构架,由外部的road.xml文件提供地名标注信息,如对地名进行删减、增加、纠错等操作时,只需要对xml文件进行相应的更改就可以了,而flash文件不需要做任何的改动。这样就大大减小了维护、更新的工作量。 以上就是flash调用外部xml文件的基本步骤;当然我们在本例中调用是已经编辑好的xml数据文件,而获取海量地名在地图上的坐标值也同样可以在flash环境中获得。
既然涉及xml文件,就有必要对xml有一个初步的了解。
<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>
1、建立xml对象:
var myxml = new xml();
myxml.load(“data.xml”);
myxml.ignorewhite = true;/默认的为false
public load(url:string) : boolean
onload = function(success:boolean) {}
首先我们要创建一个包含关于需要标注的地名信息文件,即包含地名称、地名坐标等基本信息。本例中我们只创建一个示范性的地名信息数据文件,其格式为xml文件格式,内容如下:
<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>
road_xml.ignorewhite = true; /忽略空格:
road_xml.onload = function (success:boolean):void {
if (success) { /如果调用成功
var childitems:array = road_xml.firstchild.childnodes; /定义数据组
var f=0; /定义mc深度的变量
for (var i:number = 0; i var x=childitems[i].childnodes[1].childnodes[0].nodevalue /获取x坐标值
var y=childitems[i].childnodes[2].childnodes[0].nodevalue /获取y坐标值
_root.map_mc.bzmap_mc.createtextfield(“road”+i, f, x, y, 1, 1); /创建地名文本
p=eval(“road”+i); /将文本框变量的名称赋给p
p.autosize = “left”; /指定文本的对齐方式
p.text = childitems[i].childnodes[0].childnodes[0].nodevalue ; /获取地名名称
f=f+1; /mc深度自动加1
}
}
}
xml辅助flash电子地图标注地名_flash教程
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » xml辅助flash电子地图标注地名_flash教程
相关推荐
-      flash中作毛笔写字动画效果_flash教程
-      用flash as代码制作按钮弹出窗口_flash教程
-      让flash动画适应任何分辨率的网页_flash教程
-      用photoshop去除照片中文字_photoshop教程
-      用flash 8 as代码写摄像头拍照功能_flash教程
-      flash as代码简单实现动态文本包边效果_flash教程
-      深入了解flash as中的setinterval方法_flash教程
-      关于flash中注册点与中心点的区别_flash教程