0

美好的一天,我有一个问题。我需要使用循环来安排从 XML 加载的图像。我应该如何加载带有坐标(x,y)的函数 loadData 图像和带有文本字段的描述?这是我的代码:

var xmlList:XMLList;
var urlLoader:URLLoader;
function Main():void 
    {
        urlLoader = new URLLoader();
        urlLoader.load(new URLRequest("images.xml"));
        urlLoader.addEventListener(Event.COMPLETE, loadData);


    }
function loadData(e:Event):void {

xml = new XML(urlLoader.data);
xmlList = xml.image;
for (var i:uint = 0; i < xmlList.length(); i ++ ) 
    {

   }}

这是我的 XML:

<images>
<image>
    <title>First Picture</title>
    <file>images/pic1.jpg</file>
    <x>180</x>
    <url></url>
    <y>50</y>       
</image>
<image>
    <title>Second Picture</title>
    <file>images/pic2.jpg</file>
    <x>100</x>
    <y>100</y>
    <url></url>     
</image>

非常感谢!

4

2 回答 2

0

查看您的代码,我建议您使用 TileList 来显示图像。然后,您可以构建一个自定义组件用作 itemRenderer 以获得您想要的结果。即使您不想使用列表来显示图像,您也必须创建一个自定义组件,以便您可以显示图像 + 文本并使用组件的 XY 属性将其定位在屏幕上。

基本上是这样的:

` var myComp:MyCustomComponent;

for (var i:uint = 0; i < xmlList.length(); i ++ ) 
{
   myComp = new MyCustomComponent();
   targetUI.addChild(myComp);
   myComp.text = xmlList..image[i].title;
   myComp.imgsrc = xmlList..image[i].file;
   myComp.x = xmlList..image[i].x;
   myComp.y = xmlList..image[i].y;
}

`

希望能帮助到你!

于 2013-04-01T13:33:28.507 回答
0

您必须在函数 loadData 中为图像创建新的加载器

function loadData():void
{
     var imageLoader:Loader;
     for (var i:int = 0; i < xmlList.length();i++)
     {
          imageLoader = new Loader();
          imagePath:URLRequest = new URLRequest(xmlList[i].file);
          imageLoader.contentLoaderInfo.addEventListener(Event.Complete, loadCompleteHandler);
          imageLoader.load(imagePath);
}
function loadCompleteHandler(event:Eent):void
{
    var loaderInfoParams:LoaderInfo = event.currentTarget as LoaderInfo;
    var currentImage:Bitmap = event.currentTarget.content as Bitmap;

    addChild(currentImage);
}

之后,使用 loaderInfoParams.url 找到加载图像的名称。并且,使用 xml 中加载图像的名称查找其他参数。或者你可以创建一个字典,键是图像名称,值是坐标和文本。

于 2013-04-02T10:09:19.417 回答