![]() |
|
||||||||||
|
|||||
|
[+1.4 18.06.07]
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Доброго времени суток.
Подскажите пожалуйста: можно-ли сохранить в переменной ссылку на какое-либо свойство определенного объекта? что-то наподобие:
__________________
А я Томат. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ссылки делаются только на данные сложного типа, такие как Array, Object и т.п. Number, String, Boolean, int, uint не могут иметь ссылок на себя.
|
|
|||||
|
[+1.4 18.06.07]
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Пасиб.
__________________
А я Томат. |
|
|||||
|
а у меня почему то не получается сослаться на XML или XMLList
правда ссылки уменя внутри конструктора второго класса, а XML в первичном конструкторе первого класса. короче код Index.as: package {
import flash.display.*;
import flash.xml.*;
public class Index extends Sprite {
public var someXML:XML;
public function Index ():void {
this.someXML=new XML (<xml y="666"/>);
var test:Test=new Test(this);
}
}
}
import flash.display.*;
import flash.xml.*;
class Test extends Sprite {
public var parentXML : XML;
public function Test (Parent:Object):void {
this.parentXML = Parent.someXML;
trace (this.parentXML.@y); // оригинал
// шаг 1
this.parentXML.@y =777;
trace (Parent.someXML.@y); // покажет 777 - значит ссылка пашет
// шаг 2
Parent.someXML.@y = 888;
trace (this.parentXML.@y); // покажет 888 - значит ссылка пашет
// шаг 3
Parent.someXML = new XML(<xml y="444"/>);
trace (this.parentXML.@y); // покажет 888 - значит ссылка СЛОМАЛАСЬ
// шаг 4
this.parentXML = Parent.someXML;
trace (this.parentXML.@y); // покажет 444 - ссылка пашет
// шаг 5
this.parentXML = new XML(<xml y="333"/>);
trace (Parent.someXML.@y); // покажет 444 - ссылка сломана
}
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ну все верно, new XML возвращает ссылку на новый объект. А parentXML продолжает ссылаться на старый объект, как ни в чем ни бывало.
Избежать — сделать биндинг на сеттерах и геттерах, только зачем оно надо — не представляю. И не понимаю, зачем создавать две ссылки на один объект, чтобы потом иметь геморрой с ними… |
|
|||||
|
сделать биндинг на сеттерах и геттерах - это что ты имеешь ввиду?
сделать что то типа ? public function set parXML (xml:XML):void {
this.Parent.someXML = xml;
}
public function get parXML ():XML{
return this.Parent.someXML;
}
у меня например есть общая XML где хранятся всякие данные.. есть много конструкторов классов, которые по разному обрабатывают разные элементы этой XML. причём например разные конструкторы могут использовать один и тот же нод. Ну там стили к тексту с помощью CDATA, сам текст, стили элементов по которым рисовать окна и т.д. вот и хочу чтобы загрузив например новую XML с новыми данными , ссылки на этот общий XML Не терялись. А иначе получается нет обновления. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|