【问题标题】:AS3:: an array of loaded through xml images with different widthsAS3:: 通过xml加载的不同宽度图片数组
【发布时间】:2014-02-18 19:28:47
【问题描述】:

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

【问题讨论】:

    标签: xml arrays actionscript-3 image-gallery


    【解决方案1】:

    您将使用一个变量来跟踪当前的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;
    }
    

    编辑:

    由于收集对象的宽度是一个异步过程,您可能需要等到每个Miniaturka 都从sizeHandler 方法接收到其宽度,然后再尝试创建和定位Miniaturka 的下一个实例。

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

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

    【讨论】:

    • 好的,但是当我无法从其他类中获取加载的 img 宽度时该怎么办。我已经尝试了一切;/
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多