正文

XML类2009-03-21 08:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sovf/41675.html

分享到:

XML类(2008-10-06 16:44:34)

先看一个例子:

var imageXML:XML = <images>

    <image source="images/Image1.jpg" thumb="thumbnails/Image1.jpg">Description of image 1.</image>

    <image source="images/Image2.jpg" thumb="thumbnails/Image2.jpg">Description of image 2.</image>

    <image source="images/Image3.jpg" thumb="thumbnails/Image3.jpg">Description of image 3.</image>

    <image source="images/Image4.jpg" thumb="thumbnails/Image4.jpg">Description of image 4.</image>

    </images>;

trace(imageXML.children()[0].attribute("source")) //输出:images/Image1.jpg

trace(imageXML.image[0].attribute("source"));//输出:images/Image1.jpg

trace(imageXML.child("image")[0].attribute("source"));//输出:images/Image1.jpg

常用方法:

    myXML.children():不可以有参数,括号必须要有

    myXML.节点名称:访问全部该节点的属性内容

myXML.child() :必须有一个字符串类型的参数

一个XML文件大致包含三个部分:

    根节点:每个XML文件有且只能有一个根节点,这里是images

    节点:每个XML文件可以有多个节点,可以用“.”或child()、children()方法访问,这里的节点为image,注意:访问的属性是该节点包含的属性,而不是节点里节点属性的内容,这里trace(imageXML.image[0]);输出为Description of image 1.而不是<image source="images/Image2.jpg" thumb="thumbnails/Image2.jpg">Description of image 2.</image>

    节点里的节点属性:包含在节点里,这里有source、thumb,这些节点里的节点属性的内容需要使用attribute(“节点属性名称”)方法来访问。

 

外部调用xml文件:

var imageLoader:Loader;

var xml:XML;

var xmlList:XMLList;

var xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(new URLRequest("data/images.xml"));

xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);

 

function xmlLoaded(event:Event):void

{

    xml = XML(event.target.data);//这里不能写成xml = event.target.data as XML;

    xmlList = xml.children();

    for(var i:int = 0;i<xmlList.length();i++)

    {

        imageLoader = new Loader();

        imageLoader.load(new URLRequest(xmlList[i].attribute("thumb")));

        addChild(imageLoader);

        imageLoader.x = 25;

        imageLoader.y = 150*i + 25;

    }

}

其中imageLoader.load(new URLRequest(xmlList[i].attribute("thumb")));一句可以改成imageLoader.load(new URLRequest(xml.children()[i].attribute("thumb")));或者imageLoader.load(new URLRequest(xml.child("image")[i].attribute("thumb")));后两种方法易记,但没xmlList简单。

创建XMLList:

    myXMLList:XMLList;

    myXMLList = myXML.children();

对象声明与对象实例化:

一般声明与实例化在同语句里执行,比如var xmlLoader:URLLoader = new URLLoader();

但是如果某个对象需要实例化多个对象,比如使用for循环,创建多个,这样的话就先进行声明,在for循环里进行实例化,比如:

    var imageLoader:Loader;

    for(var i:int = 0;i<xmlList.length();i++)

        {

            imageLoader = new imageLoader();

}

Loader与URLLoader:

    Loader类可用于加载swf文件或图像(jpg、png、gif)文件。

    URLLoader类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据。

在上面的例子中要载入image.xml文件,所以使用URLLoader类,加载图片则使用Loader类。

调用xml文件里的数据:

一种方法就是用myXML.children()[i].attribute(“属性名”)的方法,上例中用的就是这种方法。也可以给Loader实例的name属性赋值,然后在事件函数中调用event.target.name就可以调用xml文件中的数据了。比如:

imageLoader.name = xml.child(“image”)[i].attribute(“source”);

imageLoader.addEventListener(MouseEvent.CLICK,showPicture);

function showPicture(event:MouseEvent):void

{

       imageLoader = new Loader();

       imageLoader.load(new URLRequest(event.target.name));

}

动态载入图片的相应文本:

imageLoader.addEventListener(MouseEvent.CLICK, showPicture);

在showPicture函数中添加语句:

for(var j:int = 0;j<xmlList.length();j++)

       {

              if(xmlList[j].attribute("source")==event.target.name)

              {

                     imageText.text = xml.children()[j];

                     addChild(imageText);

              }

       }

TextFieldAutoSize属性:

它是在设置TextField类的autoSize属性时用到的常量,有:

       TextFieldAutoSize.CENTER :文本居中

       TextFieldAutoSize.LEFT :左对齐,即文本字段的左侧固定不变,右侧(根据字符长度)自动调整单行的大小

       TextFieldAutoSize.NONE :不调整大小

       TextFieldAutoSize.RIGHT :右对齐,参考左对齐

添加图片缓动载入效果:

在showPicture函数添加:

var fadeTween:Tween = new Tween(imageLoader,"alpha",None.easeNone,0,1,5);

阅读(1654) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册