Просмотр полной версии : Выравнивание формы сообщений
Имеется XML со структурой для дальнейшего прочтения во флеше. XML структура создается путем отправки пользователями сообщений. То есть во флеше это все выглядит как сообщение под сообщением ну как на любом форуме))
Проблема в том, что сообщения налезают друг на друга. Выровнять получается только путем указания точной цифры для всех сообщений сразу, но это плохо, так как одно сообщение от другого может содержать больший объем текста и налезать на следующее сообщение.
Пример этого здесь
Mnilionic
08.10.2008, 18:52
_y.сообщения = сумме высот предыдущих сообщений
_y.сообщения = сумме высот предыдущих сообщений
Пишу таким макаром
this._y["mc"+y] = this["mc"+y]._y+this["mc"+y]._height
и нифига, может, что-то не то делаю???
попробуй _у сообщения умножать на разницу в высоте и на 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
}
// итак чтобы получить нижнюю точку сообщения что нужно ? правильно взять верхнюю точку,
//предидущего сообщения и прибавить к ней, высоту того же предидущего сообщения, так мы получим
//точку, окончания предидущего сообщения, ну и далее указываем эту точку, как начало координат
//следущего сообщения
все просто, если подумать :)
Ребята спасибо за помощь, конечно, но все равно, ни чего не получается.
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;
}
}
Mnilionic дай расцелую твой аватар!))
Спасибо это то, что нужно!
“ХриГорий сеХодня ЗажиХаем!!”
:drinks:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.