Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.05.2008, 12:00
elenaki вне форума Посмотреть профиль Отправить личное сообщение для elenaki Найти все сообщения от elenaki
  № 1  
Ответить с цитированием
elenaki

Регистрация: Jan 2002
Сообщений: 22
По умолчанию странное поведение цикла (Flash+XML)

делаю список линков. все тексты таскаю из XML. если линк из одной строки - нормально строится в
цикле список (я прибавляю к _у каждый раз по 60px), но если в линке две и более строки - начинается
налезание друг на друга. пыталась вычислять высоту текстового поля, но она всегда 0 (я ее вывожу
перед названием для проверки - одни нули). пыталась вычислять высоту мувиков, в которых эти
текстовые поля (там для каждого линка свой муви-клип), везде выводит 4. чего 4? не понимаю... а
10-й линк в списке вообще пропал- пустое место! там должен быть линк title 7, его нет такого
вообще никогда не было.
Изображения
 
__________________
kto na noven'kogo?

Старый 13.05.2008, 13:03
crc вне форума Посмотреть профиль Отправить личное сообщение для crc Найти все сообщения от crc
  № 2  
Ответить с цитированием
crc
[+4 08.04.08]
 
Аватар для crc

Регистрация: Jan 2008
Адрес: Вильнюс
Сообщений: 91
Отправить сообщение для crc с помощью ICQ
Без исходников сложно строить предположения

Старый 13.05.2008, 13:09
elenaki вне форума Посмотреть профиль Отправить личное сообщение для elenaki Найти все сообщения от elenaki
  № 3  
Ответить с цитированием
elenaki

Регистрация: 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?

Старый 13.05.2008, 13:45
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Код:
bb.tf._height = bb.tf.textHeight + 5;
Операция бессмыслена при включенном автосайзе.

4 - это (2 + 2) - размеры отступов текстого поля. Когда там текст, к высоте строки + растояние между строками добавляется еще 4 пикселя. Когда поле пустое, то остаются только они.

Попробуйте сменить очередность. Сначала сформируйте поля, а потом во втором цикле расставте их по высоте. Текст не всегда успевает инициализироваться, поэтому на момент запроса высоты, можно получить 0. Я давно с этим не сталкивался, а вот в6-ой версии постоянно. Порой поставишь после установки значения текста, но до установки высоты, трейс и все работает. Трейс убираю и опять высота было 0.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.05.2008, 14:26
elenaki вне форума Посмотреть профиль Отправить личное сообщение для elenaki Найти все сообщения от elenaki
  № 5  
Ответить с цитированием
elenaki

Регистрация: 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.
Старый 13.05.2008, 15:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Надо использовать кнопку , а не создавать несколько сообщений подряд.

Выложите используемый xml, который генерит сервер.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 13.05.2008, 15:33
elenaki вне форума Посмотреть профиль Отправить личное сообщение для elenaki Найти все сообщения от elenaki
  № 7  
Ответить с цитированием
elenaki

Регистрация: Jan 2002
Сообщений: 22
не могу. к серверу нет доступа, а на локалке нет базы, не успела перенести. у меня база на
греческом, у вас вместо него будут вопросики, но это неважно. вот файл. XML не грузится,
поэтому txt.
Вложения
Тип файла: txt view_country_events.txt (3.2 Кб, 50 просмотров)
__________________
kto na noven'kogo?

Старый 13.05.2008, 16:02
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: 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
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 14.05.2008, 11:23
elenaki вне форума Посмотреть профиль Отправить личное сообщение для elenaki Найти все сообщения от elenaki
  № 9  
Ответить с цитированием
elenaki

Регистрация: Jan 2002
Сообщений: 22
спасибо. немного помогло. текстовое поле теперь раздвигается на высоту текста. но 10-й
линк все равно пропадает. что там может быть такое? в XML этот линк есть и он ничем не
отличается от 9-го или 11-го.
Изображения
 
__________________
kto na noven'kogo?

Старый 14.05.2008, 11:31
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Не могу ничего сказать, по вашему файлу он у меня стоит где надо. Вы бы сохранилт txt в кодировке utf-8, а то может там символы стоят ведут себя иначе
Запись
Код:
<?xml version="1.0" encoding="utf-8"?>
на кодировку файл не влияет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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