AS3 ::一个通过不同宽度的xml图像加载的数组

时间:2014-02-18 19:28:47

标签: xml arrays actionscript-3 image-gallery

如何撰写mini[i].x = i * 1280;?在下面的代码中,将一个图像加载到另一个图像旁边。

让我们说7张图片 - 所有图片都有不同的宽度。因为此mini[i].x = i * 1280;仅适用于宽度相同的图片。

xml1 = new XML(URLLoader(event.target).data);
var i:Number;
mini = new Array(xml1.obrazek.length());            
count = xml1.obrazek.length();
for (i=0; i<count; i++)
{   
    mini[i] = new Miniaturka(xml1.obrazek[i].attribute("id"),i);
    addChild(mini[i]);
    mini[i].x = i * 1280;
}

我不想像你在这个网站上找到的那样......:

http://www.adartis.pl/#portfolio

1 个答案:

答案 0 :(得分:0)

您可以使用变量来跟踪当前x位置,并在循环对象时继续添加它:

xml1 = new XML(URLLoader(event.target).data);
var i:Number;
var currentX:Number = 0;
mini = new Array(xml1.obrazek.length());            
count = xml1.obrazek.length();
for (i=0; i<count; i++)
{   
    mini[i] = new Miniaturka(xml1.obrazek[i].attribute("id"),i);
    addChild(mini[i]);
    mini[i].x = currentX;
    currentX += mini[i].width;
}

修改

由于收集对象的宽度是一个异步过程,因此在尝试创建和定位下一个实例之前,您可能需要等待每个MiniaturkasizeHandler方法接收到其宽度。 Miniaturka

您可以这样做的一种方法是从PARSE_COMPLETE重新发送sizeHandler事件,并在您实例化Miniaturka的代码中侦听该事件。

你必须摆脱for循环,而是在处理完事件后定位旧实例并创建新实例。