标题: [实例教程] FLASH XML求职简历制作教程(一)-
space
管理员
Rank: 9Rank: 9Rank: 9


UID 2
精华 65535
积分 657019
帖子 546
下载币 385 枚
推广分 2058 点
经验值 1945 点
阅读权限 200
注册 2005-3-25
状态 离线
发表于 2006-4-21 06:28  资料  个人空间  短消息  加为好友 
FLASH XML求职简历制作教程(一)-

   前几天一个朋友介绍了一家公司。结果发现自己少了三样东西:简历、技术性强的作品、自信。于是想做个“技术性强的简历”。这样也能有些底气,多些自信。在别人问我懂不懂OOP的时候,就不用说“学是学过,没做过”了。

  先把学习过的AS2.0面向对象编程重新过一遍消化吸收,然后用两天时间做了这个简历。照例提供源文件下载。第一次“OOP”,写到最后代码有点乱了。

  这两天写代码写到头痛。借一本书上的话:“编程对很多人来说是一件很枯燥、很难的事情,当把它当成一种强烈的兴趣时,编程便是一件非常有趣的事情。”当调试半天的bug终于解决当复杂功能终于实现的时候,那种喜悦绝对是一种享受。

  这喜悦对我来说太过奢侈。我憎恶现在的教育制度,让我把时间全浪费在毫无兴趣更无用处的东西上,憎恶如此看重文凭的病态的社会让我不得不对自己的憎恶俯首称臣!

  

 浏览效果

  

 查看UML图

源文件

[url=/UploadTeach/2006/02/28/2006228173051899.rar]job.rar[/url]

做这个

简历

的时候,一个下载了

愚人部落主页

源代码的朋友问我关于XML的问题。我说你等等,做好手头的东西我写个教程给你。现在就以

这个简历的XML

为例,说一下如何解析XML。(

→查看XML

  XML文件就像一个树状的目录。可以把第一行当作它扎根的“土地”。

<?xmlversion='1.0'encoding='UTF-8'?>  XML文件是由节点构成的。它的第一个节点为“根节点”。一个XML文件必须有且只能有一个根节点,其他节点都必须是它的子节点。我们在FLASH里使用XML对象解析XML的时候,this代表整个XML文件,它的根节点就是this.firstChild。this.firstChild.childNodes则返回由根节点的所有子节点组成的节点数组。

  每个子节点又可以有自己的子节点。节点编号由0开始,根节点的第一个子节点为this.firstChild.childNodes[0],它的子节点数组就是this.firstChild.childNodes[0].childNodes。

  继续深入到没有子节点的单一节点,比如根节点第一个子节点的第二个子节点this.firstChild.childNodes[0].childNodes[1],它返回的是一个XML对象(Object)。这里需要特别注意,节点标签之间的数据本身也视为一个节点this.firstChild.childNodes[0].childNodes[1].firstChild,而不是一个值。

  我们解析XML的最终目的当然就是获得数据的值:this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue。注意!不是this.firstChild.childNodes[0].childNodes[1].nodeValue!节点名称有时也是我们需要的数据:this.firstChild.childNodes[0].childNodes[1].nodeName。注意比较获得节点名称和节点值的不同。

  除了作为子节点,数据还可以作为节点属性。节点属性写在节点标签内部:<节点属性1="属性值"属性2="属性值"......>节点值</节点>。如果数据全作为属性而没有节点值,则可以写成<节点属性="属性值"/>的形式,而不用写成<节点属性="属性值"></节点>。注意节点必须关闭,写成<节点属性="属性值">就不对了。

  节点的所有属性返回一个通用对象(Object),比如根节点第六个子节点的第三个子节点的所有属性为:this.firstChild.childNodes[5].childNodes[2].attributes。获得其中的“地址”属性:this.firstChild.childNodes[5].childNodes[2].attributes.地址。

  比较而言,数据作为属性的方式更好。因为文件相对比较小,而且避免深入更多层子节点,解析速度更快。

  下面以简历的

JobXMLModel类

(模型)看看在flash里具体的解析。

JobXMLModel类

继承XML类,首先在构造函数里设置ignoreWhite属性为true忽略XML文件中多余的空格。

//构造函数

publicfunctionJobXMLModel(){

  ignoreWhite=true;

}

//覆盖XML类的onLoad事件

privatefunctiononLoad():Void{

  //变量tmpA存储根节点的节点数组。

  vartmpA:Array=this.firstChild.childNodes;

  //把tmpA的长度存储在tmpL变量里。

  vartmpL:Number=tmpA.length;

  //以根节点第一、第六个子节点为例,同样存储数组长度变量

  varbasicInfoL:Number=tmpA[0].childNodes.length;

  varmyWorksL:Number=tmpA[5].childNodes.length;

  //根节点子节点的节点名称存入数组

  for(vari:Number=0;i<tmpL;i ){

    项目列表.push(tmpA.nodeName);

  }

  //第一个子节点数据作为子节点

  for(vari:Number=0;i<basicInfoL;i ){

    //单一节点返回一个XML对象,用一个变量tmpO存储它

    vartmpObject=tmpA[0].childNodes;

    //把每个节点的名称和节点值作为通用对象(Object)的属性存在数组里

    基本资料.push({title:tmpO.nodeName,content:tmpO.firstChild.nodeValue});

  }

  //第六个子节点数据作为节点属性

  for(vari:Number=0;i<myWorksL;i ){

    vartmpObject=tmpA[5].childNodes;

    //把节点名称和节点属性作为通用对象的属性存在数组里

    我的作品.push({url:tmpO.attributes.地址,name:tmpO.nodeName,desc:tmpO.attributes.描述});

  }

  //把onLoad事件广播出去,由

JobPresenter类

(表示器)接收数据加载视图类(

JobView

)

  broadcastMessage("onXMLLoaded");

}

//隐式获取函数,供表示器接受数据

publicfunctiongetbasicInfo():Array{

  return基本资料;

}



把下面的网址贴到网络上任何地方,可以获得下载币 详情点击这里
http://bbs.sj63.com/viewthread.php?tid=2487&fromuid=0 复制本帖地址
顶部
[广告] 如何快速赚取论坛下载币?


当前时区 GMT+8, 现在时间是 2008-9-6 07:25
粤ICP备05029101号