具有循环和不同高度属性的 addChild

addChild with looping and different height properties

我正在使用 Flash as3.0 构建应用程序。 这是我的代码。

function onCompleteLoadTimeline(event:Event){
    var result:Object = JSON.parse(event.target.data);
    var yPos = 0;

    for (var i:int=0;i<=2;i++){
        tpostArr[i] = new t_post();
        var batas_mc:batas = new batas();

        tpostArr[i].foto.x = 52.50;
        tpostArr[i].foto.y = 52.50;

        tpostArr[i].nama.x = 120;
        tpostArr[i].nama.y = 20;

        tpostArr[i].postingan.x = 120;
        tpostArr[i].postingan.y = 55.15;
        tpostArr[i].postingan.wordWrap = true;
        tpostArr[i].postingan.autoSize = TextFieldAutoSize.LEFT;

        tpostArr[i].tombol_suka.x = 440;
        tpostArr[i].tombol_suka.y = 73;
        tpostArr[i].nama.text = result[i].timeline_name;      
        tpostArr[i].postingan.text = result[i].timeline_post;
        batas_mc.x = 0;
        batas_mc.y = tpostArr[i].postingan.y + tpostArr[i].postingan.height + 20;
        tpostArr[i].addChild(batas_mc);

        timeline_mc.addChild(tpostArr[i]);
        tpostArr[i].y = i* tpostArr[i].height;
    }
}

关于 tpost 的 y 位置。 tpost 的高度并不总是相同的。 tpost 可以更高,具体取决于 tpostArr[i].postingan.height,我希望 tpost 不重叠。 enterFrame可以解决吗?你能给我看代码吗?

我会使用一个变量来保存重叠的最大值。换句话说,如果您在 x = 20 处添加显示对象的实例,并且显示对象的宽度为 10 像素,则变量将设置为 30,如下所示:

 yourVar = yourMovieClip.x + yourMovieClip.width

然后,当您添加下一个时,将其下限设置为yourVar

这个概念应该可行,并且很容易适用于您的情况。

我认为在你的情况下,你正试图以一定的垂直间距实例化你的对象,对吧?如果是这样,只需

yourVar = tpostArr[i].y + tpostArray[i].height;

并将下一个实例的 y 值设置为

yourVar + 5; // or whatever number of pixels you want. 

这样,每个实例的高度可以是任意数量,并且您存储了一个变量,它将成为 post 到 post 的下一个 y 值。

希望我已经充分理解您的问题。让我知道这个是否奏效。