![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2002
Сообщений: 22
|
делаю список линков. все тексты таскаю из XML. если линк из одной строки - нормально строится в
цикле список (я прибавляю к _у каждый раз по 60px), но если в линке две и более строки - начинается налезание друг на друга. пыталась вычислять высоту текстового поля, но она всегда 0 (я ее вывожу перед названием для проверки - одни нули). пыталась вычислять высоту мувиков, в которых эти текстовые поля (там для каждого линка свой муви-клип), везде выводит 4. чего 4? не понимаю... а 10-й линк в списке вообще пропал- пустое место! там должен быть линк title 7, его нет такоговообще никогда не было.
__________________
kto na noven'kogo? |
|
|||||
|
[+4 08.04.08]
|
Без исходников сложно строить предположения
|
|
|||||
|
Регистрация: Jan 2002
Сообщений: 22
|
исходники не имеют смысла бех XML, а его у меня на сервере строит PHP, таская данные
из базы. к серверу сейчас нет доступа, там проблемы с пятницы. могу показать кусок AS, где я строю этот список. там много лишнего, конечно, не имеющего отношения к списку непосредственно... вот: for (iii=0; iii< cont_xml.firstChild.childNodes[1].childNodes.length; iii++) { /// vivod spiska linkov
// Для каждой кнопки создаём муви клип
_root.createEmptyMovieClip("event"+iii, (iii+1)*12);
// Создадим переменную, хранящюю название кнопки
var bb = _root["event"+iii];
bb.id_act = id_action /// nomer akcii
// attach для того, чтобы отражался задний фон для кнопки из нашей библиотеки
//b.attachMovie("back", "back", 1);
bb._x = 375;
bb._y = 0;
// Создаём текстовое поле для отображения названия кнопки (в скобках указывается размер кнопки)
bb.createTextField("tf",0, 50, 30, 170, 60);
// format knopki
bb.tf.multiline = true;
bb.tf.autoSize = true;
bb.tf.wordWrap = true;
bb.tf.selectable= false;
bb.tf.border = true;
var t_fmt:TextFormat = new TextFormat();
t_fmt.font = "Myriad Pro";
t_fmt.size = 14;
t_fmt.bold = false;
t_fmt.color = 0x993333;
t_fmt.align = "left";
with (bb.tf) {
wordWrap = true;
embedFonts = true;
selectable = false;
}
// Вызываем из массива нужное название кнопки
bb.tf.text = (iii+1) + ". ";
bb.tf.text += bb.tf.textHeight + " "; /// test
bb.tf.text += cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.titlos;
// Применяем к тексту нужные параметры
bb.tf._height = bb.tf.textHeight + 5;
bb.tf.setTextFormat(t_fmt);
// Устанавливаем кнопки по вертикали друг за другом с промежутком в 10 пиксель
bb._yscale = 100;
bb._y = (bb._height*iii) + 60;
bb.count = iii
// Задаём для каждой кнопки ссылку для перехода по ней при нажатии
bb.link = cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.url;
// Устанавливаем обработчик событий нажатия на кнопку
bb.onPress = function() {
this.t_fmt.color = 0x993333;
// При нажатии otkrivaem drygoy text
var str:String = String(cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.date + " - " +
cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.typos + "<br>" +
cont_xml.firstChild.childNodes[1].childNodes[this.count].childNodes[0].nodeValue);
var my_array:Array = str.split("\r\n");
str = "";
for (var k=0; k<my_array.length; k++) {
str += my_array[k]+'<br>';
}
with (event_text) {
border = false;
html = true;
wordWrap = true;
multiline = true;
htmlText = str;
}
//menyem id-action po kliky
_root.id_action = cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.id_action;
/// zagryzka drugix fotok
_root.anim.F_createFoto();
// zagryzka drygogo video
F_createVid();
//zagryzka dr. myziki
F_createZvyk();
/// slider naverx
_root.Slider._x = 410;
_root.Slider._y = 265;
};
} /// konec vivoda linkov
__________________
kto na noven'kogo? |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Операция бессмыслена при включенном автосайзе.
4 - это (2 + 2) - размеры отступов текстого поля. Когда там текст, к высоте строки + растояние между строками добавляется еще 4 пикселя. Когда поле пустое, то остаются только они. Попробуйте сменить очередность. Сначала сформируйте поля, а потом во втором цикле расставте их по высоте. Текст не всегда успевает инициализироваться, поэтому на момент запроса высоты, можно получить 0. Я давно с этим не сталкивался, а вот в6-ой версии постоянно. Порой поставишь после установки значения текста, но до установки высоты, трейс и все работает. Трейс убираю и опять высота было 0. |
|
|||||
|
Регистрация: Jan 2002
Сообщений: 22
|
Сначала сформируйте поля -
т.е. создать мувиклипы, в них текcтовые поля, которым прописать форматирование и текст? можно поподробнее, никогда не работала с динамичекими полями, а тут еще и шрифт им особый надо. запуталась, где содержимое, где оформление. может, проблема в том, что все текстовые поля имеют одно имя? хотя они же в разных мувиклипах сидят... вообщем, вынесла я расстановку мувиклипов во второй цикл, но текст НЕ выводится. по наведению курсор делается рукой, по клику меняется, то что должно меняться, а самих линков не видно. когда добавила во второй цикл еще и присвоение текста текстовому полю - линки появились опять в том же порядке, с налезанием друг на друга и пропуском 10-го по счету линка. счас свихнусь. попробовала присвоить переменной массива текстовое значение ссылки, чтоб во втором цикле не обращаться к XML, а брать готовое из массива. выводятся все undefined, 10-го НЕТ! вот. разделила. но выводит ТОЖЕ САМОЕ. линки налезают друг на друга и не выводится 10-й. var text_linka = new Array();
var url_linka = new Array();
for (iii=0; iii< cont_xml.firstChild.childNodes[1].childNodes.length; iii++) { /// vivod spiska linkov
// Для каждой кнопки создаём муви клип
_root.createEmptyMovieClip("event"+iii, (iii+1)*12);
// Создадим переменную, хранящюю название кнопки
var bb = _root["event"+iii];
bb.id_act = id_action /// nomer akcii
// attach для того, чтобы отражался задний фон для кнопки из нашей библиотеки
//b.attachMovie("back", "back", 1);
bb._x = 375;
bb._y = 0;
// Создаём текстовое поле для отображения названия кнопки
bb.createTextField("tf",0, 50, 30, 170, 60);
// format knopki
bb.tf.multiline = true;
bb.tf.autoSize = true;
bb.tf.wordWrap = true;
bb.tf.selectable= false;
bb.tf.border = true;
with (bb.tf) {
wordWrap = true;
embedFonts = true;
selectable = false;
}
// Вызываем из XML нужное название кнопки
text_linka[iii] = (iii+1) + ". " + cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.titlos;
// Задаём для каждой кнопки ссылку для перехода по ней при нажатии
url_linka[iii] = cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.url;
} /// konec vivoda linkov
/// cikl rasstanovki poley po visote
for (iii=0; iii< cont_xml.firstChild.childNodes[1].childNodes.length; iii++) { /// vivod spiska linkov
// Создадим переменную, хранящюю название кнопки
var bb = _root["event"+iii];
bb.tf.text = text_linka[iii];
bb.link = url_link[iii];
// Применяем к тексту нужные параметры
bb.tf.setTextFormat(t_fmt);
// Устанавливаем кнопки по вертикали друг за другом с промежутком в 60 пиксель
bb._y = (bb._height*iii) + 60;
bb.count = iii
// Устанавливаем обработчик событий нажатия на кнопку
bb.onPress = function() {
this.t_fmt.color = 0x993333;
// При нажатии otkrivaem drygoy text
var str:String = String(cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.date + " - " +
cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.typos + "<br>" +
cont_xml.firstChild.childNodes[1].childNodes[this.count].childNodes[0].nodeValue);
var my_array:Array = str.split("\r\n");
str = "";
for (var k=0; k<my_array.length; k++) {
str += my_array[k]+'<br>';
}
with (event_text) {
border = false;
html = true;
wordWrap = true;
multiline = true;
htmlText = str;
}
//menyem id-action po kliky
_root.id_action = cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.id_action;
/// zagryzka drugix fotok
_root.anim.F_createFoto();
// zagryzka drygogo video
F_createVid();
//zagryzka dr. myziki
F_createZvyk();
/// slider naverx
_root.Slider._x = 410;
_root.Slider._y = 265;
}; /// konec funkcii onPress
}/// konec 2-go cikla
__________________
kto na noven'kogo? Последний раз редактировалось iNils; 13.05.2008 в 15:17. |
|
|||||
|
Регистрация: Jan 2002
Сообщений: 22
|
не могу. к серверу нет доступа, а на локалке нет базы, не успела перенести. у меня база на
греческом, у вас вместо него будут вопросики, но это неважно. вот файл. XML не грузится, поэтому txt.
__________________
kto na noven'kogo? |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Попробуйте так
var y:Number = 0;
for (iii = 0; iii < cont_xml.firstChild.childNodes[1].childNodes.length; iii++) {
/// vivod spiska linkov
// Для каждой кнопки создаём муви клип
_root.createEmptyMovieClip ("event" + iii, (iii + 1) * 12);
// Создадим переменную, хранящюю название кнопки
var bb = _root["event" + iii];
bb.id_act = id_action;
/// nomer akcii
// attach для того, чтобы отражался задний фон для кнопки из нашей библиотеки
//b.attachMovie("back", "back", 1);
bb._x = 375;
bb._y = 0;
// Создаём текстовое поле для отображения названия кнопки (в скобках указывается размер кнопки)
bb.createTextField ("tf", 0, 50, 30, 170, 60);
// format knopki
bb.tf.multiline = true;
bb.tf.autoSize = true;
bb.tf.wordWrap = true;
bb.tf.selectable = false;
bb.tf.border = true;
var t_fmt:TextFormat = new TextFormat ();
t_fmt.font = "Myriad Pro";
t_fmt.size = 14;
t_fmt.bold = false;
t_fmt.color = 0x993333;
t_fmt.align = "left";
with (bb.tf) {
wordWrap = true;
embedFonts = true;
selectable = false;
}
// Вызываем из массива нужное название кнопки
bb.tf.text = (iii + 1) + ". ";
bb.tf.text += bb.tf.textHeight + " ";
/// test
bb.tf.text += cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.titlos;
// Применяем к тексту нужные параметры
bb.tf._height = bb.tf.textHeight + 5;
bb.tf.setTextFormat (t_fmt);
// Устанавливаем кнопки по вертикали друг за другом с промежутком в 10 пиксель
bb._yscale = 100;
bb._y = y;
bb.count = iii;
// Задаём для каждой кнопки ссылку для перехода по ней при нажатии
bb.link = cont_xml.firstChild.childNodes[1].childNodes[iii].attributes.url;
// Устанавливаем обработчик событий нажатия на кнопку
bb.onPress = function () {
this.t_fmt.color = 0x993333;
// При нажатии otkrivaem drygoy text
var str:String = String (cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.date + " - " + cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.typos + "<br>" + cont_xml.firstChild.childNodes[1].childNodes[this.count].childNodes[0].nodeValue);
var my_array:Array = str.split ("\r\n");
str = "";
for (var k = 0; k < my_array.length; k++) {
str += my_array[k] + '<br>';
}
with (event_text) {
border = false;
html = true;
wordWrap = true;
multiline = true;
htmlText = str;
}
//menyem id-action po kliky
_root.id_action = cont_xml.firstChild.childNodes[1].childNodes[this.count].attributes.id_action;
/// zagryzka drugix fotok
_root.anim.F_createFoto ();
// zagryzka drygogo video
F_createVid ();
//zagryzka dr. myziki
F_createZvyk ();
/// slider naverx
_root.Slider._x = 410;
_root.Slider._y = 265;
};
y += bb._height;
}
/// konec vivoda linkov
}
|
|
|||||
|
Регистрация: Jan 2002
Сообщений: 22
|
спасибо. немного помогло. текстовое поле теперь раздвигается на высоту текста. но 10-й
линк все равно пропадает. что там может быть такое? в XML этот линк есть и он ничем не отличается от 9-го или 11-го.
__________________
kto na noven'kogo? |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:20. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|