日历

« 2008-10-15  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的好友

统计信息

  • 访问量: 496
  • 日志数: 5
  • flash数: 1
  • 建立时间: 2006-12-10
  • 更新时间: 2007-08-31

RSS订阅

我的最新日志

  • 【转载】一些xhtml和css的东西

    2007-8-31

    1、很多兼容性问题,是因为不同标签在不同浏览器下有着不同的 padding margin默认值。所以可以事先定义 * { padding:0; margin:0;}
    或者
    ul,li,h1,h2,h3,h4,h5,h6,p,table,td,div,img,hr,dd,dt,span,a,dt,dd,ol{margin:0;padding:0;font-size:12px;}

    2、关于布局,可以看dreamweaver cs3里的模板怎么写的,它的写法是最好的写法。大的布局,可以直接使用 dreamweaver cs3 里默认的那些模板。 然后去掉注释,就能用了。

    3、适当的使用margin/padding,在调整box(盒子)中,元素位置的时候,使用box(盒子)的padding比较好。而不要使用,box内元素的margin。
    原因是,box内元素使用margin的时候,会对box的margin产生影响,产生错位。
    但在使用padding的时候注意一点: 比如本来 width:100px 的box,如果设置了padding-left:20px的话,那就要把width减去20px。

    4、一个box,设置了border后,要把width减去border的粗。 比如width:100px 的box,左右有1px的边,那应该设置box width为98px。

    5、在添加box的时候,能不给width和height的,尽量不给。
    height可以靠内部的元素去撑开。
    width不设置的话,一般默认就是100%宽。

    6、同时给一个box设置背景图片和背景颜色的方法是,先设置背景图片,再设置背景颜色,代码如下:
    .bg {background:url(http://blogbeta.blueidea.com/images/blbian.gif) no-repeat}
    .style1 {width:100px;height:100px;background-color:#ebf1e5;}
    <div class="style1 bg"></div>

    7、当float:left之类的东西写的太多,影响到周围,或者下面的元素的时候,尝试使用clear:both去清除。 参考dw cs3模板里的写法。
    <br class="clearfloat" />
    .clearfloat {
     clear:both;
        height:0;
        font-size: 1px;
        line-height: 0px;
    }

    8、在进行如下设置的时候<div style="height:3px"></div>,会产生兼容性问题。 ie6会出问题,你会发现,box不是3px高。
    需要如下设置: font-size:1px;  才不会有问题。参考 dw cs3模板中 clearfloat中的写法,还会加上line-height:0px。不过我发现不加也是可以的。但加会更正规。

    9、在给单行文字设置height的时候,要同时设置line-height。不然会有兼容性问题,文字会有小的错位。

    10、使用ul li列表的时候,一定要给ul设置 list-style-type: none; 不然会产生兼容性问题。 ff下会出现原点,而ie下经常看不到。

    11、在使用ul做列表的时候,不单可以写li ,还可以用dt和dd,但使用后要注意测试兼容性。我还没有总结出到底会什么问题。

    12、在给标题加样式的时候,尽量用h1 h2 h3等...去做标题的标签。可以在文档前,先设置 h1,h2,h3,h4,h5,h6{font-size:12px;font-weight:normal;}
    原因是,搜索引擎会对h标签包围的文字内容,给予更多的关注和重视。并且h本身就是为了给标题使用的。

    13、关于css中常用的命名方式,见我的附加文档----常用的css命名.txt

    14、在层次比较多的时候。尽量使用不同的标签去解决问题,而不用每个都给 class或者id。举例如下:

    <div class="t1">
            <div class="logo"><img src="http://blogbeta.blueidea.com/images/logo.gif"></div>
            <ul class="nav">
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/01.gif"><br />首页</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/03.gif"><br />办事指南</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/04.gif"><br />创业</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/05.gif"><br />政策导读</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/06.gif"><br />劳动单位成心单位介绍</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/07.gif"><br />劳动就业违法单位暴光</a></li>
            </ul>
    </div>

    这个其实可以简化:
    <div class="t1">
            <div><img src="http://blogbeta.blueidea.com/images/logo.gif"></div>
            <ul>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/01.gif"><br />首页</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/03.gif"><br />办事指南</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/04.gif"><br />创业</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/05.gif"><br />政策导读</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/06.gif"><br />劳动单位成心单位介绍</a></li>
                <li><a href="#"><img src="http://blogbeta.blueidea.com/images/07.gif"><br />劳动就业违法单位暴光</a></li>
            </ul>
    </div>
    完全可以去掉这logo和nav这两个class

    然后定义样式的时候
    .t1 div img{border:0px;margin:10px}
    .t1 ul{list-style-type: none;width:80%;}
    .t1 ul li{height:22px;line-height:22px;}
    就可以了。


    15、在层次比较多的时候,如何更好的给class命名?
    举例如下:
    .index #mainContent .mainContent_right .mainContent_list2 h1 a{}
    这是我刚给你做的页面中,层次多的时候,使用的命名方式
    是不太好的。我现在才反映过来。
    应该简化为:
    .index #mainContent .right .list2 h1 a{}
    为什么呢?为什么不怕right和list2会重复?
    因为我们前面是有路径的。
    .index #mainContent 下面的 right
    .index #mainContent .right下面的 list2
    所以是不会重复的!~
    就没必要
    .mainContent_right .mainContent_list2
    非在前面加个mainContent了!

    16、对于兼容性,我的感受是,尽量把东西写正规一些,就不会经常出现兼容性问题。
    比如ff下默认字体和ie不一样,但如果我们在开始的时候就定义了字体,就不会看起来不一样了。
    ff下很多东西的padding和ie不一样,但我们事先定义了padding为0,所以也会没事。

    17、类似a标签,或者其它 span等。如果不定义width的话,那么默认就100%宽。
    如下:
    <a>1111</a><a>2222</a><a>3333</a>
    如果我们设置了 a{float:left}后,他们三个会在一排显示,并且100%宽,变成自适应的宽,也就是里面有多少字符,就撑多大。
    这个细节,在处理滑动门效果的时候,比较有用。

    18、什么是滑动门。
    简单的说是一组按扭,每个按扭中的文字长度不一定。我又不想单独切每个按扭的背景色,所以就使用滑动门效果。让其可以自适应。
    下面是一个例子:

    <ul class="nav">
                <li><a href="#">首页</a></li>
                <li><a href="#">办事指南</a></li>
                <li><a href="#">创业</a></li>
                <li><a href="#">政策导读</a></li>
                <li><a href="#">劳动单位成心单位介绍</a></li>
                <li><a href="#">劳动就业违法单位暴光</a></li>
            </ul>

    .nav {
     list-style-type: none;
     height:70px;
     margin:0px 0px 0px 20px
    }
    .nav li{float:left;background:url(../images/b01.gif) no-repeat;margin-left:8px;margin-top:10px;}
    .nav a{
     float:left;
     color:#4d7ecd;
     display:block;
     background:url(../images/b02.gif) no-repeat right top;
     height:40px;
     padding:0px 16px 15px 16px;
     text-align:center;
    }

    这里设置了两个背景。 b01 是 按扭的左面部分(包括中间),切的时候,切大一些。
    b02是按扭右部分(不包括中间)
    把b02设置为不重复,水平居右。
    这样一个可自动伸缩的滑动门就做好了。

     

    (一)常用的CSS命名规则

      头:header

      内容:content/container

      尾:footer

      导航:nav

      侧栏:sidebar

      栏目:column

      页面外围控制整体布局宽度:wrapper

      左右中:left right center

      登录条:loginbar

      标志:logo

      广告:banner

      页面主体:main

      热点:hot

      新闻:news

      下载:download

      子导航:subnav

      菜单:menu

      子菜单:submenu

      搜索:search

      友情链接:friendlink

      页脚:footer

      版权:copyright

      滚动:scroll

      内容:content

      标签页:tab

      文章列表:list

      提示信息:msg

      小技巧:tips

      栏目标题:title

      加入:joinus

      指南:guild

      服务:service

      注册:regsiter

      状态:status

      投票:vote

      合作伙伴:partner

      (二)注释的写法:

      /* Footer */

      内容区

      /* End Footer */

      (三)id的命名:

      (1)页面结构

      容器: container

      页头:header

      内容:content/container

      页面主体:main

      页尾:footer

      导航:nav

      侧栏:sidebar

      栏目:column

      页面外围控制整体布局宽度:wrapper

      左右中:left right center

      (2)导航

      导航:nav

      主导航:mainbav

      子导航:subnav

      顶导航:topnav

      边导航:sidebar

      左导航:leftsidebar

      右导航:rightsidebar

      菜单:menu

      子菜单:submenu

      标题: title

      摘要: summary

      (3)功能

      标志:logo

      广告:banner

      登陆:login

      登录条:loginbar

      注册:regsiter

      搜索:search

      功能区:shop

      标题:title

      加入:joinus

      状态:status

      按钮:btn

      滚动:scroll

      标签页:tab

      文章列表:list

      提示信息:msg

      当前的: current

      小技巧:tips

      图标: icon

      注释:note

      指南:guild

      服务:service

      热点:hot

      新闻:news

      下载:download

      投票:vote

      合作伙伴:partner

      友情链接:link

      版权:copyright

      (四)class的命名:

      (1)颜色:使用颜色的名称或者16进制代码,如

      .red { color: red; }

      .f60 { color: #f60; }

      .ff8600 { color: #ff8600; }

      (2)字体大小,直接使用"font+字体大小"作为名称,如

      .font12px { font-size: 12px; }

      .font9pt {font-size: 9pt; }

      (3)对齐样式,使用对齐目标的英文名称,如

      .left { float:left; }

      .bottom { float:bottom; }

      (4)标题栏样式,使用"类别+功能"的方式命名,如

      .barnews { }

      .barproduct { }

      注意事项::

      1.一律小写;

      2.尽量用英文;

      3.不加中杠和下划线;

      4.尽量不缩写,除非一看就明白的单词.

      主要的 master.css

      模块 module.css

      基本共用 base.css

      布局,版面 layout.css

      主题 themes.css

      专栏 columns.css

      文字 font.css

      表单 forms.css

      补丁 mend.css

      打印 print.css

    (一)常用的CSS命名规则

      头:header

      内容:content/container

      尾:footer

      导航:nav

      侧栏:sidebar

      栏目:column

      页面外围控制整体布局宽度:wrapper

      左右中:left right center

      登录条:loginbar

      标志:logo

      广告:banner

      页面主体:main

      热点:hot

      新闻:news

      下载:download

      子导航:subnav

      菜单:menu

      子菜单:submenu

      搜索:search

      友情链接:friendlink

      页脚:footer

      版权:copyright

      滚动:scroll

      内容:content

      标签页:tab

      文章列表:list

      提示信息:msg

      小技巧:tips

      栏目标题:title

      加入:joinus

      指南:guild

      服务:service

      注册:regsiter

      状态:status

      投票:vote

      合作伙伴:partner

      (二)注释的写法:

      /* Footer */

      内容区

      /* End Footer */

      (三)id的命名:

      (1)页面结构

      容器: container

      页头:header

      内容:content/container

      页面主体:main

      页尾:footer

      导航:nav

      侧栏:sidebar

      栏目:column

      页面外围控制整体布局宽度:wrapper

      左右中:left right center

      (2)导航

      导航:nav

      主导航:mainbav

      子导航:subnav

      顶导航:topnav

      边导航:sidebar

      左导航:leftsidebar

      右导航:rightsidebar

      菜单:menu

      子菜单:submenu

      标题: title

      摘要: summary

      (3)功能

      标志:logo

      广告:banner

      登陆:login

      登录条:loginbar

      注册:regsiter

      搜索:search

      功能区:shop

      标题:title

      加入:joinus

      状态:status

      按钮:btn

      滚动:scroll

      标签页:tab

      文章列表:list

      提示信息:msg

      当前的: current

      小技巧:tips

      图标: icon

      注释:note

      指南:guild

      服务:service

      热点:hot

      新闻:news

      下载:download

      投票:vote

      合作伙伴:partner

      友情链接:link

      版权:copyright

      (四)class的命名:

      (1)颜色:使用颜色的名称或者16进制代码,如

      .red { color: red; }

      .f60 { color: #f60; }

      .ff8600 { color: #ff8600; }

      (2)字体大小,直接使用"font+字体大小"作为名称,如

      .font12px { font-size: 12px; }

      .font9pt {font-size: 9pt; }

      (3)对齐样式,使用对齐目标的英文名称,如

      .left { float:left; }

      .bottom { float:bottom; }

      (4)标题栏样式,使用"类别+功能"的方式命名,如

      .barnews { }

      .barproduct { }

      注意事项::

      1.一律小写;

      2.尽量用英文;

      3.不加中杠和下划线;

      4.尽量不缩写,除非一看就明白的单词.

      主要的 master.css

      模块 module.css

      基本共用 base.css

      布局,版面 layout.css

      主题 themes.css

      专栏 columns.css

      文字 font.css

      表单 forms.css

      补丁 mend.css

      打印 print.css

  • 如何把xml的内容调入flash存入数组

    2006-12-26

    作者:小赢虫   类型:闪吧BBS   来源:闪吧

    第一步当然是建立一个unicode格式的xml文档,在其中建立内容:
    <?xml version=’1.0’ encoding=’UTF-8’?> 
    <简历> 
    <基本资料> 
    <姓名>赵森</姓名> 
    <性别>男</性别> 
    <学历>小学</学历> 
    <院校>中国小学</院校> 
    </基本资料> 
    <工作资料> 
    <姓名>杰</姓名> 
    <性别>男</性别> 
    <学历>小学</学历> 
    <院校>中学</院校> 
    </工作资料> 
    </简历> 
    目标是把此xml的内容存为数组,进行调用; 
    在第一侦写入以下: 
    myarray_basic=new Array();//这个准备用来存储第一个子节点的内容; 
    myarray_job=new Array();//同理; 
    myxml=new XML();//建立XML的对象; 
    myxml.load("uncode.xml")//导入刚才写的XML文件; 
    myxml.ignoreWhite=true;//这个不说了; 
    myxml.onLoad=function(success){//导入后做什么呢?你心里应该明白,不然我就白写了。 
    newarray=this.firstChild.childNodes;// 建立一个临时数组,用来存储所有字节点的内容。 
    basic=newarray[0].childNodes.length//获取工作内容的数组长度; 
    job=newarray[1].childNodes.lenth//同理; 
    for(i=0;i<basic;i++){//这样就把第一个字节点的内容存入了myarry_basic的数组中了; 
    myarry_basic.push({desc:newarray[0].nodeName,content:newarray[0].firstChild.nodeValue}) 

    for(i=0;i<job;i++){//这样就把第二个字节点的内容存入了myarry_job的数组中了; 
    myarry_job.push({desc:newarray[0].nodeName,content:newarray[0].firstChild.nodeValue}) 

    my_text.text=myarray_basic[0].content;//在桌面上建立一个名为my_text的动态文本进行测试; 

    提醒:unicode格式的xml文档!

  • 读取XML中的内容

    2006-12-26

    作者:天恒  来源:闪吧

    先用专写XML的工具(XMLSPY)下载地点http://download.xml.org.cn/XMLSPYEntComplete2004.exe

    写一个叫aaa.xmlXML文件 ^_^

    <?xml version="1.0" encoding="UTF-8"?>

    <book>

    <book1 ip="sco01" url="www.163.com">

    <z1 name="第一章" content="做人">

    <j1 name="第一节">

    我要做个好人,请help help我,hohoho^_^ !

    </j1>

    <j2 name="第二节">

    但我还是想做回坏人哦:) 呱呱呱~~

    </j2>

    </z1>

    <z2 name="第二章" content="吃人">

    <j1 name="第一节">

    现在的老虎是不会吃人的~~

    </j1>

    <j2 mane="第二节">

    现在的小羊连骨头也不放过55555

    </j2>

    <j3 name="第三节">

    <h1 name="第一回">

    做人有要厚道,要多学学我:)

    </h1>

    </j3>

    </z2>

    </book1>

    <book2 ip="sco02" url="www.21cn.com">

    <z1 name="第一章" content="科目">

    <j1 name="第一节">

    调理农务系

    </j1>

    </z1>

    </book2>

    </book>

    第二个就是flash文件了,(aaa.fla)J 就在第一贴里写就可以的了hohoho

    myXML = new XML();
    myXML.load("aaa.xml");
    myXML.ignoreWhite = true;
    myXML.onLoad = function(success) {
    if (success) {
    //-------------------------------读取每节中的内容-------------------------------------------------------

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0]);
    //返回 我要做个好人,请help help我,hohoho^_^ !

    //trace(myXML. FirstChild.childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue);
    //返回 我要做个好人,请help help我,hohoho^_^ ! (注:第一第二个是相同作用的J)

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0]);
    //返回 但我还是想做回坏人哦:) 呱呱呱~~

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0]);
    //返回 现在的老虎是不会吃人的~~

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[1].childNodes[0]);
    //返回 现在的小羊连骨头也不放过55555

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[2].childNodes[0]);
    //返回 <h1 name="第一回">做人有要厚道,要多学学我:)</h1>

    //trace(myXML.childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[0]);
    //返回 调理农务系

    //---------------------------读取 book/book1/第二章/第三节/第一回 中的内容------------------------------

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[2].childNodes[0].childNodes[0]);
    //返回 做人有要厚道,要多学学我:)

    //-------------------------------读取节点中的名称-------------------------------------------------------

    //trace(myXML.childNodes[0].nodeName);
    //返回 book

    //trace(myXML.childNodes[0].childNodes[0].nodeName);
    //返回 book1

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].nodeName);
    //返回 z1

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeName);
    //返回 j1

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[0].nodeName);
    //返回 j1 (注:这是第二章的 j1)

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].nodeName);
    //返回 z2

    //trace(myXML.childNodes[0].childNodes[1].childNodes[0].nodeName);
    //返回 z1 (注:这是book2的 z1)

    //-------------------------------读取节点中的属性-------------------------------------------------------

    //trace(myXML.childNodes[0].childNodes[0].attributes.ip);
    //返回 sco01

    //trace(myXML.childNodes[0].childNodes[0].attributes.url);
    //返回 www.163.com

    //trace(myXML.childNodes[0].childNodes[1].attributes.ip);
    //返回 sco02

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].attributes.name);
    //返回 第一章

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].attributes.content);
    //返回 吃人

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes[0].attributes.name);
    //返回 第一节

    //-------------------------------读取长度-------------------------------------------------------

    //trace(myXML.childNodes[0].childNodes.length);
    //返回 2 (book,book2)

    //trace(myXML.childNodes[0].childNodes[0].childNodes.length);
    //返回 2 (z1,z2)

    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes.length);
    //返回 2 (j1,j2)

    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes.length);
    //返回 3 (第二章的j1,j2,j3)

    //------------------------------------XML 类的属性-----------------------------------------------

    //firstChild 引用指定节点列表中的第一个子级
    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].firstChild.childNodes[0])
    //返回 现在的老虎是不会吃人的~~

    //lastChild 引用指定节点列表中的最后一个子级
    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].lastChild.firstChild.childNodes)
    //返回 做人有要厚道,要多学学我:)

    //nextSibling 引用父级节点的子级列表中的下一个同级
    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[0].nextSibling.childNodes[0])
    //返回 现在的小羊连骨头也不放过55555

    //previousSibling 引用父级节点的子级列表中的前一个同级
    //trace(myXML.childNodes[0].childNodes[0].childNodes[1].childNodes[1].previousSibling.childNodes)
    //返回 现在的老虎是不会吃人的~~

    //parentNode 引用指定节点的父级节点
    //trace(myXML.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].parentNode)
    //返回 <j1 name="第一节">
    // 我要做个好人,请help help我,hohoho^_^ !
    // </j1>
    }
    };

    只要大家把屏蔽打开就可以在输出里看到返回中的内容

    其中firstChild == childNodes[0]

    firstChild : 引用父级节点的子级列表中的第一个子级

    ChildNodes: 指定 XML 对象的子级组成的数组

    nodeName : XML 对象的节点名称

    attributes : 一个包含指定 XML 对象的所有属性的关联数组

    nodeValue: XML 对象的节点值
  • FLASH调用XML数据简明教程

    2006-12-26

    作者:huayicai  来源:闪吧

    下面是一个flash调用xml数据的教程,写得很简单,适合初学者。 不什么写得不到,或不对,请各位高手指教!
    一、建立XML对象

    var myXML = new XML();
    二、引用XML文件
    myXML.load("pro.xml");
    三、忽略空格: //默认的为false
    myXML.ignoreWhite = true;
    四、处理XML对象的函数:
    myXML.onLoad = function(success) { statements;}
    五、pro.XML文件的内容
    <products name="good"><product name="well">wyu</product><product name="better">wyu2</product></products>
    六、测试返回值 1、myXML.childNodes[0]将返回:
    <products name="good">
    <product name="well">wyu</product>
    <product name="better">wyu2</product>
    </products>
    2、myXML.childNodes[0].nodeName将返回:
    good
    3、myXML.childNodes[0].childNodes[0].name将返回:
    well
    4、myXML.childNodes[0].childNodes[0]将返回:
    <product name="well">
    wyu
    </product>
    5、myXML.childNodes[0].childNodes[0].nodeName将返回:
    well
    6、myXML.childNodes[0].childNodes[1].attributes.name将返回:
    better
    7、myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue将返回:
    wyu
    8、
    var myName = myXML.firstChild.firstChild;
    trace(myName.nodeName);//将输出well
    myName = myName.nextSibling;
    trace(myName.nodeName);//将输出better childNodes[0]等价于firstChild
    七、测试代码
    var myXML = new XML();
    myXML.load("pro.xml");
    myXML.ignoreWhite = true;
    myXML.onLoad = function(success) {
    if(success) {
    myArray = myXML.childNodes[0];
    trace(myArray.attributes.name);
    /*trace(myXML.childNodes[0].childNodes[1].firstChild.nodeValue);
    trace(myXML.firstChild);
    trace(myXML.childNodes[0].nodeName);
    trace(myXML.firstChild.attributes.name);
    trace(myXML.childNodes[0].childNodes[1].nodeName);
    trace(myXML.childNodes[0].childNodes[1].attributes.name);
    trace(myXML.firstChild.firstChild);
    trace(myXML.firstChild.firstChild.nodeName);
    trace(myXML.firstChild.firstChild.attributes.name);
    trace(myXML.childNodes[0].childNodes[0].childNodes[0].nodeValue);
    var myName = myXML.firstChild.firstChild;
    trace(myName.nodeName);
    myName = myName.nextSibling;
    trace(myName.nodeName);
    }
    };
  • [转载]关于LoadVars

    2006-12-26

    loadVariables这个指令并不陌生,在MX版本之前就已经存在了,而为何在MX版本开始要增加多一个LoadVars事件呢?
    我想很多人都在使用loadVariables吧,简单而且不用像LoadVars那样麻烦还要写一大堆,这也是这两个时间不同的关键所在。
    对于不懂的朋友,那么我们先来建立一个外部文件,然后再看看loadVariables和LoadVars的写法:

    external.txt

    myText=这是外部文件

    那么先来看看loadVariables的写法:

    loadVariables("external.txt",_level0);
    btn.onRelease = function() {
    trace(myText); //获得的输出结果是 “这是外部文件”
    }

    这样就可以很顺利的取得外部文件的变量myText的值了,但是如果我们不是要在按钮事件发生之后才取得变量呢?
    我们也来试试看把之前的代码改成

    loadVariables("external.txt",_level0);
    trace(myText);
    //获得的输出结果是 “undefined”

    为何会不一样呢? 原因很简单,因为要取得外部变量之前,我们必须先载入该文件完毕之后才能够取得当中的变量。简单来说就像你是用loadMovie载入图片,在此图片还没有载入完毕之前你是无法知道图片的宽度,高度,颜色等资料。为了证明出这样的结果,我们再把之前的代码修改一下

    System.useCodepage = true;
    loadVariables("external.txt", _level0);

    onEnterFrame = function() {
    for(var i in _level0) {
    if( i == "myText") {
    delete this.onEnterFrame;
    }
    trace(i);
    }
    trace("--------------------");
    }
    trace("myText = "+myText+"\n");


    我们使用循环追踪变量myText的结果如下:

    myText = undefined //这里是一开始我们所要取得myText变量的结果

    onEnterFrame //这里是第一次循环,可以得到的只有三个变量,就是循环本身,Flash版本和按钮
    $version
    btn
    --------------------
    myText //而在第二次循环的情况下我们可以看到了,场景中已经完全载入好外部文件并取得当中的变量了
    onEnterFrame
    $version
    btn
    --------------------


    所以从以上来看,要使用loadVariables取得外部就必须是在按钮事件或自己定义循环侦测,这样的伸缩性就不大。因此在我以前使

    用Flash 5时做起事情来可是蛮费时间,幸好MX版本之后出现了LoadVars以解决这个恼人的问题。

    那么LoadVars怎么使用呢?那么我们再建立一个Flash文件,输入以下代码然后和external.txt储存在同一路径后测试

    System.useCodepage = true;
    var myLoad = new LoadVars(); //定义LoadVars这个类
    myLoad.load("external.txt"); //指定LoadVars载入external.txt这个文件
    myLoad.onLoad = function(success) { //LoadVars的载入事件
    if(success) {
    trace(this.myText);
    }
    }

    看到输出结果了吗?是不是只多几行代码就可以达到你所要的结果。在LoadVars最主要的关键就是onLoad事件了,在这个事件中会回传一个布林值,即代表了通知代码文件是否已经载入成功。所以在onLoad事件当中我们最好使用if来判断回传值是成功还是失败,如果成功的话文件中的变量会以object的方式储存在LoadVars当中,所以我们可以使用myLoad.myText或this.myText来取得。

    这也是很多人没去看帮助档就提问为何trace()在onLoad事件之外就无法取得变量,此onLoad方法既然可以判断文件可否被载入,当然也可以拿来测试文件是否存在。如果指定的文件不存在,onLoad事件也就马上会回传载入不成功的布林值。

Open Toolbar