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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.12.2009, 14:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 11  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Оператор . (точка) примененный к объекту типа XML всегда даст врезультате XMLList - остальная часть вопроса мне не понятна...
__________________
Hell is the possibility of sanity

Старый 06.12.2009, 21:38
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 12  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
вот XML:
Код:
<?xml version="1.0" encoding="utf-8"?>
<authors >
  <author1 >
           <name>Вася</name>
  </author1>
  <author2>
           <name>Петя</name>
  </author2>
</authors>
вот родитель:
Код AS3:
public class TestXML extends MovieClip {
 
		var childClassTestXML:ChildClassTestXML;
 
		// переменные считывания XML
		public static var mainXML:XML;
		private var mainXMLRequest:URLRequest=new URLRequest("testXML.xml");
		private var mainXMLLoader:URLLoader = new URLLoader;
 
		// Конструктор ************************
		public function TestXML() {
			loadMainXML();
		}
		// Функции
		// Загрузка данных с XML
		private function loadMainXML():void {
			mainXMLLoader.load(mainXMLRequest);
			mainXMLLoader.addEventListener(Event.COMPLETE, mainXMLLoaded);
		}
		// После загрузки XML
		private function mainXMLLoaded(e:Event) {
			mainXML = new XML(mainXMLLoader.data);
			var childXML:XML = <author1><name></name></author1>;
			childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася");
	       }
	}
вот дочерний класс:
Код AS3:
public class ChildClassTestXML extends MovieClip {
 
		// Конструктор ************************
		public function ChildClassTestXML(xmlStructure:XML, myString:String) {
			super();
			var mainXML = TestXML.mainXML; //основной XML
			var myXMLStructure:XML = xmlStructure.copy();
			trace ("01. mainXML.XMLStructure = " + mainXML.myXMLStructure);// ничего нет, а надо добраться до "Вася"в mainXML.author1.name
			mainXML.myXMLStructure = myString;
			trace ("02. mainXML.author1.name = "+mainXML.author1.name) // Вася
			trace ("03. mainXML.XMLStructure = " + mainXML.myXMLStructure);//Новый Вася
			trace ("04. mainXML = " + mainXML);
}
}

-------------------------------------------------------------------------------
и вот что получается на
Код AS3:
trace ("04. mainXML = " + mainXML);
:

Код:
myXML = <authors>
  <author1>
    <name>Вася</name>
  </author1>
  <author2>
    <name>Петя</name>
  </author2>
  <myXMLStructure>Новый Вася</myXMLStructure>
</authors>
Вопрос: что мне написать в строчках в родительском классе
Код AS3:
var childXML:XML = <author1><name></name></author1>;
childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася");
чтобы достучаться до mainXML.author1.name ?


Сделал вроде как вы посоветовали, но пока добавился просто тег <myXMLStructure>Новый Вася</myXMLStructure>

че то лыжи не едут
спасибо.


Последний раз редактировалось wvxvw; 06.12.2009 в 21:48.
Старый 06.12.2009, 22:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 13  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я все равно не понимаю, что вы хотите сделать...

Цитата:
чтобы достучаться до mainXML.author1.name ?
<< нужно написать mainXML.author1.name ...
но, это как бы вполне очевидно, ну, только не понятно, что вы ожидаете от этого действия...

Давайте, лучше по-другому... напишите, какой результат вы хотите получить, потому что иначе вас абсолютно не понятно.
Если вы привыкли к какому-то другому подходу в работе с XML (PHP DOMDocument / Java SAX XMLReader / C# XmlReader и т.п) или что-то еще, то если вы об этом расскажете, то, наверное вас будет проще понять.

Просто сейчас не понятна задача...
__________________
Hell is the possibility of sanity

Старый 06.12.2009, 22:31
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 14  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
Извините, что я непонятно изъясняюсь. Я "дизайнер взявшийся за программирование" ), необходимо для быстрейшей реализации проекта.
Сформулирую по другому:
Измените пожалуйста функцию в родительском классе (весь код в моем предыдущем посте):
Код AS3:
// После загрузки XML
private function mainXMLLoaded(e:Event) {
	mainXML = new XML(mainXMLLoader.data);
	var childXML:XML = <author1><name></name></author1>; 
        //var childXML:XML = mainXML.author1.name; // так не работает!!!
	childClassTestXML = new ChildClassTestXML(childXML,"Новый Вася");
}
Так чтобы в XML
Код:
<?xml version="1.0" encoding="utf-8"?>
<authors >
  <author1 >
           <name>Вася</name>
  </author1>
  </authors>
изменился на
Код:
<?xml version="1.0" encoding="utf-8"?>
<authors >
  <author1 >
           <name>Новый Вася</name>
  </author1>
  </authors>


Последний раз редактировалось misha_yu; 06.12.2009 в 22:35.
Старый 06.12.2009, 22:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 15  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это уже проще:
Код AS3:
var xml:XML =
<authors>
	<author1>
		<name>Вася</name>
	</author1>
</authors>;
xml.author1.name[0].setChildren("Новый Вася");
trace(xml.toXMLString());
/*
<authors>
  <author1>
    <name>Новый Вася</name>
  </author1>
</authors>
*/
__________________
Hell is the possibility of sanity

Старый 06.12.2009, 23:19
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 16  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
Да но в моем случае строка выполняющая это действие
Код AS3:
xml.author1.name[0].setChildren("Новый Вася");
должна быть в дочернем объекте....

Это важно. На месте "Новый Вася" должно быть имя загружаемого на сервер файла, который будет считан только в объекте дочернего класса.

а вот какой что надо изменять xml.author1.name[0] или xml.author1.name[2] это задается в родителе.

т.е. грубо говоря так:
код в родителе:
Код AS3:
var XMLStructure1 = xml.author1.name[0]
myChild(XMLStructure1);
var XMLStructure2 = xml.author1.name[1]
myChild(XMLStructure2);
и в дочернем
Код AS3:
public function (myXMLStructure:XML){
myXMLStructure = "Вася";
}

спасибо за терпение....

Старый 06.12.2009, 23:31
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А какая разница? Вы же уже передали ссылку на XML дочернему объекту? XML - это сложный тип данных, поэтому передаетася по ссылке, если вы захотите наоборот, передать копию - есть метод copy().
__________________
Hell is the possibility of sanity

Старый 06.12.2009, 23:39
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 18  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
да передал XML , но как мне сказать одному объекту чтобы он изменил xml.author1.name[0] а второму объекту чтобы он изменил xml.author1.name[1] и т.д.

задачу можно решить если передавать данные (имя загружаемого на сервер файла) из дочернего класса. Но это будет не красиво мне кажется, мутить лисенеры для функций в дочернем классе.

Старый 06.12.2009, 23:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 19  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
var xml:XML =
<authors>
	<author1>
		<name>Вася</name>
	</author1>
</authors>;
 
this.foo(xml.author1.name[0], "Новый Вася");
function foo(node:XML, replaceWith:String):void
{
	node.setChildren(replaceWith);
}
 
trace(xml.toXMLString());
/*
<authors>
  <author1>
    <name>Новый Вася</name>
  </author1>
</authors>
*/
?
__________________
Hell is the possibility of sanity

Старый 07.12.2009, 09:18
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 20  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
Огромное спасибо..... фурычит


Последний раз редактировалось misha_yu; 07.12.2009 в 09:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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