Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Массив текстовых данных из XML (http://www.flasher.ru/forum/showthread.php?t=141128)

lexus_back 16.06.2010 21:36

Массив текстовых данных из XML
 
Добрый день.

Загружаю данные текстовые из XML, и пытаюсь их выстроить по оси _y.
Проблема в том, что текстовые поля налазят друг на друга.

Прилагаю кусок кода как я это делаю, может быть я где то допускаю ошибку, или что то не указал в параметрах текстового поля.

P.S. при загрузке изображений подобных проблем не возникает.

Код AS1/AS2:

 
for (var i = 1; i<=playLen; i++) {
 
                mcScrollThumb.mcContent.attachMovie("txtThumb","txtThumb"+i,i);
                var txtCont:MovieClip = mcScrollThumb.mcContent["txtThumb"+i];
                txtCont.index = i;
 
                txtCont._mc.txt.autoSize = true
 
                txtTitle = arrayPlayName[txtCont.index-1];
 
                txtCont._mc.txt.htmlText = txtTitle;
 
        txtCont._y = Math.floor(i-1)*txtCont._height+9
}


rainbowrussia 16.06.2010 22:42

Все текстовые поля умещаются в одну строку?
И вы, вероятно, хотели написать:
Код:

txtCont._y = Math.floor((i-1)*(txtCont._height+9));
Корректнее было бы завести переменную, например curY, присвоить ей стартовое значение и делать примерно так:
Код:

txtCont._y = curY;
curY += txtCont._y + 9;


lexus_back 17.06.2010 11:28

rainbowrussia , спасибо за ваш ответ.
Но проблема не решена. Все текстовые поля, я пытаюсь выстроить в столбец, а не в строку. При трейсе:
Код:

trace(txtCont._height)
для каждого поля выводится своя высота, которая меняется в зависимости от количества текста. но при посторении столбца, данной строкой
Код:

txtCont._y = Math.floor((i-1)*(txtCont._height+9));
высота текстового поля, измененная не учитывается, а берется начальная.

Хемуль 17.06.2010 13:52

2 lexus_back:
А что мешает накапливать значение общей высоты в какой-то переменной вроде:
Код AS1/AS2:

var totalHeight:Number = 0; 
for (var i:Number = 1; i <= playLen; i++)
{
        var txtCont:MovieClip = mcScrollThumb.mcContent.attachMovie("txtThumb", "txtThumb" + i, i);
        txtCont.index = i;
        txtCont._mc.txt.autoSize = true;
        txtCont._mc.txt.htmlText = arrayPlayName[txtCont.index - 1];
        txtCont._y = totalHeight;
        totalHeight += txtCont._height + 9;
}


lexus_back 17.06.2010 16:06

Всем огромное спасибо за советы. Решил задачу следующим образом:
Код AS1/AS2:

function arrayPlay() {
        var startY:Number = 0;
        var interval:Number = 9;
 
        for (var i = 1; i <= playLen; i++) {               
                var txtCont:MovieClip = mcScrollThumb.mcContent.attachMovie("txtThumb", "txtThumb"+i, i);
 
        txtCont.index = i;
        txtTitle = arrayPlayName[txtCont.index-1];
 
        txtCont._mc.txt.autoSize = true;
        txtCont._mc.txt.htmlText = txtTitle;
 
        txtCont._y = startY;
 
        startY += txtCont._height + interval;
}



Часовой пояс GMT +4, время: 21:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.