语录提交--登陆--注册--论坛交流--站长博客

Flash+xml应用

[作者:来自网络][日期:2008-04-08][导航:Flash教程 >> ActionScript2 >> Flash+xml应用]
  

flash与xml的结合可以使内容与代码相分离
把内容放到xml文档中,只需要修改下xml的内容而无需再次发布swf文件
很多的flash网站 还有flash 菜单导航都是离不开xml的

flash中使用xml的简单技术和基本的操作:
       flash中xml数据都要通过XML对象来代表
常用的操作:
       1:创建xml对象
            var xmlData:XML=new XML()
       2:忽略空格
            xmlData.ignoreWhite=true;
       3:开始加载外部xml文件
           xmlData.Load("test.xml")
       4:加载完成后的操作
          xmlData.onLoad=function(success:Boolean){
             //判断
             if(success){
                trace("加载完毕");
             }
             else{
               trace("加载失败");
            }
           }
====================================
<?xml version="1.0" encoding="utf-8"?>
如果使用了中文的编码 encoding="gb2312"
city.xml

<?xml version="1.0" encoding="gb2312"?>
<root>
  
<city name="北京" code="010" pnum="10W"/>
  
<city name="上海" code="020" pnum="15W"/>
  
<city name="深圳" code="030" pnum="20W"/>
</root>

flash调用XML数据
新建fla文件,命名为useCity.fla
按F9 编写如下代码(as 2.0)

System.useCodepage = true;
//如果xml文档中是中文编码 encoding="gb2312"
var xmlData:XML = new XML();
xmlData.ignoreWhite 
= true;
//按xml的结构显示 每级之间含有回车
xmlData.onLoad = function(success:Boolean) {
    
if (success) {
        trace(
this);
    }
 else {
        trace(
"load failed");
    }

}
;
xmlData.load(
"city.xml");

如果xml文档中使用的是中文编码 encoding="gb2312"
<?xml version="1.0" encoding="gb2312"?>
this关键字
      引用对象或影片剪辑实例。执行脚本时,this 引用包含该脚本的影片剪辑实例。
      在调用方法时,this 包含对包含所调用方法的对象的引用。
      在附加到按钮的 on() 事件处理函数中,this 引用包含该按钮的时间轴。
      在附加到影片剪辑的 onClipEvent() 事件处理函数中,this 引用该影片剪辑自身的时间轴。
      因为 this 是在包含它的脚本的上下文中计算的,所以您不能在脚本中使用 this 来引用在类文件中定义的变量。必须使用new XML()构造函数来创建一个xml对象
才能调用xml类各种方法.在flash中,xml文档用
XML类来表示。层次结构文档的每个元素都是由
XMLNode对象来表示。
--------------------------------------------------------
完整的一个点击按钮实现 检索code=“010”

System.useCodepage = true;
//如果xml文档中是中文编码 encoding="gb2312"
var xmlData:XML = new XML();
xmlData.ignoreWhite 
= true;
//按xml的结构显示 每级之间含有回车
var myList:Array = new Array();
//为了可以在flash中其他位置可以使用xml的数据,把数组存在onLoad外面
var stadus:Boolean;
xmlData.load(
"city.xml");
xmlData.onLoad 
= function(success:Boolean) {
    
if (success) {
        trace(
this);//this指引用的對象
        trace(this.childNodes[0].childNodes[0].attributes.name);
        myList 
= this.childNodes[0].childNodes;//首節點的那些節點
        
//childNodes本身是Array對象
        trace(myList[0].attributes.name);
    }
 else {
        trace(
"load failed");
    }

}
;
function getName(p1:String):Void 
{
    
if (p1 == myList[0].attributes.code) {
        trace(
"getName is Run")
         cityName 
= myList[0].attributes.name;
         cityPNum 
= myList[0].attributes.pNum;
    }

}

a_btn.onRelease 
= function() {
    getName(
"010")
    trace(cityName);
    trace(cityPNum);
}
;

 

循环遍历xml树
xml数据一旦导入到flash中
我们就需要利用xml中的数据
-------------------------


1:car.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<cars>
  
<car>
    
<make>Honda</make>
    
<mode>Suv</mode>
    
<year>1985</year>
  
</car>
</cars>


2:下面是新建一个Fla文件   遍历.fla(保存在和car.xml一样的路径下)

var xml:XML=new XML();
    
//创建xml对象,它是xml数据的表现者
xml.ignoreWhite=true;
    
//必须得有的语句,忽略空格
var myList:Array=new Array();
    
//让xml中的数据保存在数组中
xml.load("car.xml")
    
//开始导入car.xml
xml.onLoad=function(success){
    
if(success){
    trace(
"加载完毕");
    myList
=this.childNodes[0].childNodes[0].childNodes;
    
//将<make/> <mode/> <year/> 内容存到数组中
     main();
    
//执行主方法
   else{
    trace(
"加载失败");
  }

}

function main()
{
  
for(i:Number=0;i<myList.length;i++){
     trace(myList[i];
   }

}

[文章热度:]


上一页:AS深度处理常用函数

下一页:Flash8 上传文件实例

最新话题

网站导航

搜索

网站公告


Copyright 2007 51as.com. Some Rights Reserved.
鄂ICP备07003189号

Powered by: KingCMS 5.0.1.0217