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

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

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

Регистрация: Aug 2008
Сообщений: 24
Question Создание динамических текстовых полей согласно содержимому XML файла

добрый день!
Подскажите пожалуста, как работая с вот таким XML:
Код:
−
<datapacket>
<row pID="1" Business="Business1" Address="Address 1" Telephone="12345" Website="http://www.b1.com" Email="email1@something.com" Details="some text for Details." Picture="image1.jpg"/>
<row pID="2" Business="Business2" Address="Address 2" Telephone="67879" Website="http://www.b2.com" Email="email2@something.com" Details="some more text for Details." Picture="image2.jpg"/>
<row pID="3" Business="Business3" Address="Address 3" Telephone="010203" Website="http://www.b2.com" Email="email3@something.com" Details="and some more text for Details." Picture="image3.jpg"/>
</datapacket>
Для каждого ROW создать отдельное динамическое текстовое поле шириной скажем 200px/висотой 400px и выстроить из по горезонтали на подобии http://www.x3studios.com/en/

Какую логистику и инструментарий для этого лутше использовать?

Разбирался как обрабатывать XML согласно вот этого мануала. http://www.adobe.com/devnet/flash/ar...php_print.html

Зарание прошу извенить за скорее всего глупый вопрос новичка )))

Старый 02.08.2008, 18:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так и не понял, что именно у Вас не получилось. Покажите Ваш код.
__________________
Reality.getBounds(this);

Старый 02.08.2008, 18:43
jakim_denis вне форума Посмотреть профиль Отправить личное сообщение для jakim_denis Найти все сообщения от jakim_denis
  № 3  
Ответить с цитированием
jakim_denis

Регистрация: Aug 2008
Сообщений: 24
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Так и не понял, что именно у Вас не получилось. Покажите Ваш код.
ну у меня пока что не то чтобы не получилось ) Я просто хочу вокруг монитора и незнаю с какого боку подойти к решению такой задачи и какой инструментарий стоит для этого использовать.

Старый 02.08.2008, 20:26
jakim_denis вне форума Посмотреть профиль Отправить личное сообщение для jakim_denis Найти все сообщения от jakim_denis
  № 4  
Ответить с цитированием
jakim_denis

Регистрация: Aug 2008
Сообщений: 24
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Так и не понял, что именно у Вас не получилось. Покажите Ваш код.
Перерывши форумы пришол к такому:
В данный момент я работаю с таким кодом:
Код:
Stage.align = "LT";
Stage.scaleMode = "noScale";
embedFonts = true;

headlineXML = new XML();

headlineXML.onLoad = myLoad;
headlineXML.load("headlines.xml");

function myLoad(ok) {
	if (ok == true) {
		Publish(this.firstChild);
	}
}

function Publish(HeadlineXMLNode) {
	if (HeadlineXMLNode.nodeName.toUpperCase() == "BROADCAST") {
		content = "<b>List:</b><br><br>";
		story = HeadlineXMLNode.firstChild;
		while (story != null) {
			if (story.nodeName.toUpperCase() == "STORY") {
				lead = "";
				body = "";
				URL = "";
				element = story.firstChild;
				while (element != null) {
					
					if (element.nodeName.toUpperCase() == "LEAD") {
						lead = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "BODY") {
						body = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "URL") {
						URL = element.firstChild.nodeValue;
					}
					element = element.nextSibling;
				}
				content += "<a href='"+URL+"'>"+lead+"</a><br>"+body+"<br><br>";
				createTextField("dynamic_txt", 10, 0, 0, 150, 30);
				dynamic_txt.border = true;
				dynamic_txt.html = true;
				dynamic_txt.autoSize = true;
				dynamic_txt.htmlText=content;
			}
			story = story.nextSibling;
		}
	}
}
Для XML:
Код:
<broadcast>
<story>
<lead>This is Headline 1</lead>
<body>This is where you can add content that will appear under the first headline</body>
<URL>http://www.communitymx.com/</URL>
</story>

<story>
<lead>This is Headline 2</lead>
<body>This is content that can appear under the second headline.</body>
<URL>http://www.flash-remoting.com/</URL>
</story>
</broadcast>
Данный код создает TextField и вставляет в него все содержимое XML, мне же необходимо для каждого <story> создать отдельный и выстроить их один за другим по горизонтали.
Надеюсь я движусь в правильном русле


Последний раз редактировалось jakim_denis; 02.08.2008 в 21:56.
Старый 02.08.2008, 22:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Уже лучше)
У Вас получается один текстфилд, потому что Вы создаете его (думаете что их) на одной глубине. А на одной глубине может быть только один объект. Значит надо ввести счетчик нодов и использовать его значение для управления глубиной и заодно координатой по горизонтали.
Перед циклом while вставим объявление переменной - нашего счетчика
Код:
var counter:Number = 0;
А в теле цикла, при создании текстфилда, воспользуемся им
Код:
content += "<a href='"+URL+"'>"+lead+"</a><br>"+body+"<br><br>";
createTextField("dynamic"+counter+"_txt", 10+counter, counter*150, 0, 150, 30);
counter+=1; // увеличиваем значение счетчика
__________________
Reality.getBounds(this);

Старый 03.08.2008, 15:52
jakim_denis вне форума Посмотреть профиль Отправить личное сообщение для jakim_denis Найти все сообщения от jakim_denis
  № 6  
Ответить с цитированием
jakim_denis

Регистрация: Aug 2008
Сообщений: 24
Я логистику решение задачи понял.
Спасибо огромное!
Еще маленький вопрос:
Подскажите, а какой синтаксис правильно использовать для
Код:
dynamic_txt.border = true;
dynamic_txt.html = true;
dynamic_txt.autoSize = true;
dynamic_txt.htmlText=content;
чтоб дать им имена dynamic1_txt ....... dynamicX_txt ?

Старый 03.08.2008, 17:44
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну например так
Код:
var _txt:TextField = this["dynamic"+counter+"_txt"];
_txt.html = _txt.autoSize = true;
_txt.htmlText=content;
или делаем ссылку сразу при создании (если возможно)
Код:
var _txt:TextField = this.createTextField("dynamic"+counter+"_txt", 10+counter, counter*150, 0, 150, 30);
_txt.html = _txt.autoSize = true;
_txt.htmlText=content;
counter+=1; // увеличиваем значение счетчика
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 03.08.2008 в 17:48.
Старый 03.08.2008, 17:54
jakim_denis вне форума Посмотреть профиль Отправить личное сообщение для jakim_denis Найти все сообщения от jakim_denis
  № 8  
Ответить с цитированием
jakim_denis

Регистрация: Aug 2008
Сообщений: 24
я пробовал - но что-то кажись тогда не так с скриптом в целом (
Код:
Код:
Stage.align = "LT";
Stage.scaleMode = "noScale";
embedFonts = true;

headlineXML = new XML();

headlineXML.onLoad = myLoad;
headlineXML.load("headlines.xml");

function myLoad(ok) {
	if (ok == true) {
		Publish(this.firstChild);
	}
}

function Publish(HeadlineXMLNode) {
	if (HeadlineXMLNode.nodeName.toUpperCase() == "BROADCAST") {
		content = "";
		story = HeadlineXMLNode.firstChild;
		while (story != null) {
			if (story.nodeName.toUpperCase() == "STORY") {
				lead = "";
				body = "";
				URL = "";
				element = story.firstChild;
				var counter:Number = 0;
				while (element != null) {
					
					if (element.nodeName.toUpperCase() == "LEAD") {
						lead = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "BODY") {
						body = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "URL") {
						URL = element.firstChild.nodeValue;
					}
					element = element.nextSibling;
				}
				content += "<a href='"+URL+"'>"+lead+"</a><br>"+body+"<br><br>";
				createTextField("dynamic"+counter+"_txt", 10+counter, counter*150, 0, 150, 30);			
				var _txt:TextField = this["dynamic"+counter+"_txt"];
				_txt.html = true;
				_txt.border = true;
				_txt.autoSize = true;
				_txt.htmlText=content;
				counter+=1;
				}
			story = story.nextSibling;
		}
	}
}
Не дает вообще никакого результата при запуске мувика (

Старый 03.08.2008, 18:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код:
var counter:Number = 0;
ПЕРЕД while а не внутри
Код:
counter+=1;
в конце while, т.е. перед
Код:
story = story.nextSibling;
Счетчи считает стори, а у Вас - почемуто считает ноды внутри стори)))
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 03.08.2008 в 18:21.
Старый 03.08.2008, 18:22
jakim_denis вне форума Посмотреть профиль Отправить личное сообщение для jakim_denis Найти все сообщения от jakim_denis
  № 10  
Ответить с цитированием
jakim_denis

Регистрация: Aug 2008
Сообщений: 24
Перепутад wile =)))
Поправил, но толку было 0 (((
Код:
Stage.align = "LT";
Stage.scaleMode = "noScale";
embedFonts = true;

headlineXML = new XML();

headlineXML.onLoad = myLoad;
headlineXML.load("headlines.xml");

function myLoad(ok) {
	if (ok == true) {
		Publish(this.firstChild);
	}
}

function Publish(HeadlineXMLNode) {
	if (HeadlineXMLNode.nodeName.toUpperCase() == "BROADCAST") {
		content = "";
		story = HeadlineXMLNode.firstChild;
		var counter:Number = 0;
		while (story != null) {
			if (story.nodeName.toUpperCase() == "STORY") {
				lead = "";
				body = "";
				URL = "";
				element = story.firstChild;
				while (element != null) {
					
					if (element.nodeName.toUpperCase() == "LEAD") {
						lead = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "BODY") {
						body = element.firstChild.nodeValue;
					}
					if (element.nodeName.toUpperCase() == "URL") {
						URL = element.firstChild.nodeValue;
					}
					element = element.nextSibling;
				}
				content += "<a href='"+URL+"'>"+lead+"</a><br>"+body+"<br><br>";
				createTextField("dynamic"+counter+"_txt", 10+counter, counter*150, 0, 150, 30);			
				var _txt:TextField = this["dynamic"+counter+"_txt"];
				_txt.html = true;
				_txt.border = true;
				_txt.autoSize = true;
				_txt.htmlText=content;
				}
			counter+=1;
			story = story.nextSibling;
		}
	}
}
В ответ лишь белый скрин и пустое окно ошибок (

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

Теги
text fields , xml

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

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


 


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


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