只需从xml加载image1和image2并放置在舞台上的相应MC中

时间:2011-04-19 22:30:03

标签: xml actionscript-3 image loader movieclip

这让我疯了。我想要的应该是超级简单,但它们似乎使它变得困难,论坛上的人似乎有意提供复杂的答案。请帮助解决一个简单的问题。

我有一个带有大量数据的XML,名为userData.xml,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<videos>
    <vid src="videos/video1.flv"/>
    <vid src="videos/video2.flv"/>
</videos>
<images>
    <img src="images/image1.jpg"/>
    <img src="images/image2.jpg"/>
</images>

我想做的就是(使用AS3)获取image1.jpg并将其添加到imageHolderOne_mc并获取image2.jpg将其添加到imageHolderTwo_mc。完全忽略XML的视频部分(必须保留用于其他用途)

我真的希望有人可以提供帮助 提前致谢

2 个答案:

答案 0 :(得分:1)

查看xml primer from republicofcode as3中的how to load images dynamically

基本上就像......

var myXML:XML;

var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("yourxmlfile.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    for each(var imgSrc:String in myXML.images.*.@src){
        createLoader(imgSrc, #NAME_OF_MOVIE_CLIP#);
    }
}

function createLoader ($imgUrl:String, $placeholder:MovieClip){
    var myLoader:Loader = new Loader();
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);

    var fileRequest:URLRequest = new URLRequest($imgUrl);
    myLoader.load(fileRequest);

    function onLoaderReady(e:Event) {     
          // the image is now loaded, so let's add it to the display tree!     
        $placeholder.addChild(myLoader);
    }
}

答案 1 :(得分:0)

尝试换行根标记。 使用e4x标准/
来忽略根标签 因此,如果没有根标记,XML解析器就会混淆 访问数据时,您也会忽略根标记而不是引用它。

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <videos>
      <vid src="videos/video1.flv"/>
      <vid src="videos/video2.flv"/>
  </videos>
  <images>
      <img src="images/image1.jpg"/>
      <img src="images/image2.jpg"/>
  </images>
</root>

这样访问。

    var myXML:XML = new XML(
    <root>
      <videos>
          <vid src="videos/video1.flv"/>
          <vid src="videos/video2.flv"/>
      </videos>
      <images>
          <img src="images/image1.jpg"/>
          <img src="images/image2.jpg"/>
      </images>
    </root>
    );

trace(myXML)
    for each(var img:XML in myXML.images.img ){
      trace( img.@src )
    }