Форум 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)
-   -   Выравнивание формы сообщений (http://www.flasher.ru/forum/showthread.php?t=116677)

KiL33 08.10.2008 10:06

Выравнивание формы сообщений
 
Вложений: 1
Имеется XML со структурой для дальнейшего прочтения во флеше. XML структура создается путем отправки пользователями сообщений. То есть во флеше это все выглядит как сообщение под сообщением ну как на любом форуме))

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

Пример этого здесь

Mnilionic 08.10.2008 18:52

_y.сообщения = сумме высот предыдущих сообщений

KiL33 08.10.2008 19:41

Цитата:

Сообщение от Mnilionic (Сообщение 768881)
_y.сообщения = сумме высот предыдущих сообщений

Пишу таким макаром
Код:

this._y["mc"+y] = this["mc"+y]._y+this["mc"+y]._height
и нифига, может, что-то не то делаю???

Flcn 08.10.2008 21:23

попробуй _у сообщения умножать на разницу в высоте и на i где i порядковый номер сообщения..

Mnilionic 08.10.2008 21:37

Код:

var h_cumulate = 0;

for(цкл по собщенияем){

        var mc = текущее сообщение; // создаём мувик с сообщением
        mc._y = h_cumulate; // выставляем y
        h_cumulate += mc._height; // суммируем высоты
}


darksranger 08.10.2008 23:53

Код:

this._y["mc"+y] = this["mc"+y]._y+this["mc"+y]._height
это что ?

начнем пожалуй с простого

Код:

for (var i=0;i<allMessage;i++) {  // - обьявляем цикл
    var message:MovieClip = containerMessage.crea...("message"+i,.... // создаем НОВОЕ сообщение
    var j:Number = i-1 // берем предидущий индекс
   
message._y = containerMessage["message"+j]._y+containerMessage["message"+j]._height

}
// итак чтобы получить нижнюю точку сообщения что нужно ? правильно взять верхнюю точку,
//предидущего сообщения и прибавить к ней, высоту того же предидущего сообщения, так мы получим
//точку, окончания предидущего сообщения, ну и далее указываем эту точку, как начало координат
//следущего сообщения

все просто, если подумать :)

KiL33 09.10.2008 08:16

Ребята спасибо за помощь, конечно, но все равно, ни чего не получается.
Код:

while (xmel != null) {
        nme = xmel.nodeName;
        if (nme != null) {
                if (nme == "m") {
                       
          for (var i=0;i<xmel;i++) { 
    var message:MovieClip = this.attachMovie("mc","mc"+i,this.getNextHighestDepth());
    var j:Number = i-1 
message._y = ["mc"+j]._y+["mc"+j]._height
}
               
                        //Так было
                        /*attachMovie("mc","mc"+y,100+y);
                        this["mc"+y]._y = y*100*/
               
                                  for (attr in xmel.attributes) {
                                str = xmel.attributes[attr];
                                if (attr == "nik") {
                                        this["mc"+y].nik = str;
                                }
                                if (attr == "texta") {
                                        this["mc"+y].texta = str;
                                }
                                if (attr == "texta2") {
                                        this["mc"+y].texta2 = str;
                                }
                                if (attr == "texta3") {
                                        this["mc"+y].texta3 = str;
                                }
                        }
                        y++;
                }
        }
        if (xmel.firstChild != null) {
                xmel = xmel.firstChild;
        } else {
                if (xmel.nextSibling != null) {
                        xmel = xmel.nextSibling;
                } else {
                        xmel = xmel.parentNode;
                        xmel = xmel.nextSibling;
                }
        }
}

Возможно, глупость написал, поправьте если что:rolleyes:

Mnilionic 09.10.2008 13:13

ну ты загнул
Код:

xml = new XML();
xml.ignoreWhite = true;
xml.onLoad = loadXML;
xml.load("my_file.xml");

function loadXML(isloaded) {
        if (isloaded) done(this);
        else trace('not loaded');
}

function done(xml){
       
        var i = 0;
        var h_cumulate = 0;
        var node = xml.firstChild.firstChild;
        while (node) {
                if (node.nodeName == 'm') {
                        var message = this.attachMovie('mc', 'mc' + i, this.getNextHighestDepth());
                        message._y = h_cumulate;

                        message.nik = node.attributes['nik'];
                        message.texta = node.attributes['texta'];
                        message.texta2 = node.attributes['texta2'];
                        message.texta3 = node.attributes['texta3'];
                        i++;
                        h_cumulate += message._height;
                }
                // ->
                node = node.nextSibling;
        }
}


KiL33 09.10.2008 17:23

Mnilionic дай расцелую твой аватар!))
Спасибо это то, что нужно!


“ХриГорий сеХодня ЗажиХаем!!”
:drinks:


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

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