![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2011
Сообщений: 30
|
Здравствуйте.
Имеется Flex Project в Adobe Flash Builder. Имеется собственный класс, задача которого формировать xml. public class UDPDatagram extends Sprite { public var xml:XML = new XML(<Messages> </Messages>); private function addXML() { xml.appendChild( <mess id={xmlCount} desc={messArr[0]}> <problem>{messArr[1]}</problem> <level>{messArr[2]}</level> <description>{messArr[3]}</description> <time>{now.toLocaleString()}</time> <mac>00:00:00:00:00:00</mac> <sensor>{messArr[10]}</sensor> <ssid>{ssid}</ssid> </mess> } } Импортирую в проект package с классом так: <fx:Script> <![CDATA[ import DatagramPack.UDPDatagram; public var myData:UDPDatagram = new UDPDatagram(); ]]> </fx:Script> И второе, не менее важное... Данные поступают постоянно и соответственно xml в классе растет. Как отслеживать каждое его изменение? Полдня копался с [Bindable] и чего-то никак не заработает... Спасибо. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
Делай приватной переменную _xml, а xml объявляй как геттер/сеттер.
По-моему, если ты сделаешь Bindable _xml, то сможешь и отслеживать. |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 30
|
Пробовал так. Получается та же самая ошибка. Да и насколько понимаю геттер/сеттер равносилен публичной переменной. Делается для предоставления доступа к закрытым переменным или методам класса.
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
Что-то мне кажется, что ты где-то дал маху. Или обращаешься к переменной ДО ее инициализации.
Во-первых, хотелось бы видеть ошибку, а во-вторых, кода бы побольше. |
|
|||||
|
Цитата:
![]() Что вам компилятор то говорит? myData.xml - ок так можно обращаться в вашем случае Добавлено через 1 минуту Зачем вы хмл за основу взяли? Чем вас Array(Collection) с объектами не устраивает? |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 30
|
Цитата:
Ошибку выложу через час, как буду на работе. И там не ошибка, а Warning, который в процессе компиляции и запуска программы приводит к ошибке. Цитата:
Цитата:
Добавлено через 1 час 19 минут Такс. Обращение к переменной: <fx:Script> <![CDATA[ import DatagramPack.UDPDatagram; var myData:UDPDatagram = new UDPDatagram(); trace(myData.xml); ]]> 1120: Access of undefined property myData. Datagram.mxml /Datagram/src line 9 Flex Problem Если переменную указывать как DataProvider в ComboBox, например (а там переменная указывается в кавычках), то выдается warning, что возможно такой переменной нет и ошибка выдается уже в процессе выполнения программы. Добавлено через 2 часа 58 минут Я чего-то совсем ничего не понимаю как там это работает... Потыкался потыкался и получился вот такой код: <fx:Script> <![CDATA[ import DatagramPack.UDPDatagram; private var mydata:UDPDatagram; var i:int = 0; private function proverka():void { if(i==0) { mydata = new UDPDatagram(); i++; } trace("Проверка"); trace(mydata.xml); } ]]> </fx:Script> <s:Button x="105" y="71" label="Button" click="proverka()"/> Последний раз редактировалось maljavka; 02.09.2011 в 10:21. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Aug 2011
Сообщений: 30
|
Цитата:
Добавлено через 35 минут Ну ладно. С первым вопросом я вроде разобрался что почем. Теперь второй вопрос. Как мне следить за переменной класса, чтобы знать, что в XML что-то добавилось? Я сделал так: [Bindable(event="xmlChange")] public function get xml():XML { return _xml; } public function set xml(value:XML):void { if( _xml !== value) { _xml = value; dispatchEvent(new Event("xmlChange")); } } И соответственно в теле самой программы Но функция proverka() не запускается. В чем проблема? потому что разнесены отправка сообщения и слушатель? Если да, то как можно сделать по-другому? Спасибо |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 211
|
А что касается первого вопроса, то таки да - обращение к полю идет до инициализации. Читай ее в хандлере creationComplete родителя.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|