Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как передать структуру XML в дочерний объект? (http://www.flasher.ru/forum/showthread.php?t=133423)

misha_yu 04.12.2009 16:40

как передать структуру XML в дочерний объект?
 
всем привет,
вопрос: как передать структуру XML в дочерний объект?

Код AS3:

// Инициализация в родителе
 
var myChildObject = new myChildClass(myXMLTag);


Код AS3:

// Конструктор объекта дочернего класса
 
public function myChildClass (XMLStructure:???){
 
var myXML:XML = new XML;
myXML.XMLStructure = "myString";
 
}

Какого типа должена быть XMLStructure ?
И возможно ли вообще таким образом передать структуру XML объекта?

Спасибо.

wvxvw 04.12.2009 16:44

Код AS3:

public function MyChildClass(xmlStructure:XML)
{
    super();
    var myXML:XML = xmlStructure.copy();
    myXML.XMLStructure = "myString";
}
var myChildObject:MyChildClass = new MyChildClass(myXMLTag);

Классы - с прописной.
У функций должен быть возвращаемый тип.
У переменных должен быть тип.
Переменные и методы - со строчной.
Круглые скобки после вызова конструктора.
super() - первой строчкой в конструкторе.

misha_yu 05.12.2009 11:56

большое спасибо,
пожалуйста поясните в каком виде должен передаваться myXMLTag.
так не получается:
Код AS3:

var myChildObject:MyChildClass = new MyChildClass(MyXML.user.name)

что вставить в скобочки в родителе? Если структура например = MyXML.user.name ?

спасибо.

wvxvw 05.12.2009 14:46

XMLList - это уже не XML, ето коллекция XMLей.

SamFR 05.12.2009 16:15

Цитата:

Сообщение от wvxvw (Сообщение 870269)
super() - первой строчкой в конструкторе.

Мне кажется, это верно не всегда. При расширении сторонних компонентов часто бывает нужным произвести некую инициализацию до вызова конструктора суперкласса...

wvxvw 05.12.2009 19:56

Не-не, лучше так не делать... так можно и недозаполнение стека ? (stack underflow) получить или вообще попытаться прочитать из несущесвующего адреса в памяти, вобщем, лучше все делать по порядку - так надежнее. :)

misha_yu 05.12.2009 20:18

дык... а как в родителе задать этот XMLList или XML в круглые скобочки :confused:
wvxvw, пожалуйста приведите пример для чайников для структуры MyXML.user.name.
Че то в хэлпине не найду ответа.

wvxvw 05.12.2009 21:30

А тут как бы если вам нужно передать либо XML либо XMLList - то общий знаменатель у них Object... и ничего с этим не поделаешь...
В принципе, можно тип задать как MXMLList, но тогда, если нужно передать XML его прийдется конвертировать в XMLList.
Код AS3:

public function MyClass(arg:XMLList)
{
    super();
    this._list = arg;
}

Код AS3:

var list:XMLList = <a/> + <b/>;
var myClass:MyClass = new MyClass(list);
var xml:XML = <a/>;
myClass = new MyClass(XMLList(xml));


GFreemen 05.12.2009 22:23

Код AS3:

var myXML:XML=new XML(<hrenovXML bla="bla-bla-bla"></hrenovXML>);
var myClass=new MyClass(myXML);

Код AS3:

public class MyClass {
public function MyClass(neujeliEtoXML_param:XML){
}
}


misha_yu 06.12.2009 10:03

Дорогие товарищи, спасибо за ответы.
Но.... возможно я не правильно спросил или не понял ответов ... если так, прошу прощения :) ,

Дело в том что мой дочерний класс должен изменять некоторые значения тегов в основном XML-е. Какие именно задается в родителе. При этом не изменяя самой структуры основного XML.

Например myXML:
<authors>
<author1>Вася</author1>
<author2>Петя</author2>
</authors>

Код AS3:

MyChildClass(XMLTag:???, Name:String){
myXML.XMLTag = Name;
}

Код AS3:

var myChildObject_1 = new MyChildClass(autors.author1, "Вася") ;
var myChildObject_2= new MyChildClass(autors.author2, "Петя") ;

--------------------------------------------------------------------------------------
строка
Код AS3:

var myXML:XML = xmlStructure.copy();

полностью заменяет структуру исходного myXML на xmlStructure.
а строка
Код AS3:

myXML.XMLStructure = "myString";

потом просто добавляет к этой структуре таг под названием "XMLStructure".
Вот что у меня получилось :( ,

поможите :confused:


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

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