![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 3
|
Срочно! Помогите решить следующую проблему: пытаюсь изменить параметры класса из вложенной в метод класса функции. Проверка trace(переменная класса) успешно выдает новое значение, но только внутри вложенной функции. Реально же саму переменную она не изменяет. Код:
package { // Импортируем классы import flash.display.*; import flash.net.*; import flash.utils.*; import flash.events.*; public class chart extends Sprite { // Создаем переменную класса public var backgrClr:Number = 0xFFFFFF; public function chart() { var loader:URLLoader = new URLLoader ; var confdata:XML; loader.addEventListener(Event.COMPLETE,readxmlfile); // Загружаем xml файл с переменными инициализации; loader.load(new URLRequest("configuration.xml")); function readxmlfile(event:Event):void { try { confdata = new XML(event.target.data); backgrClr = confdata.child("colors").child("backgr"); trace(backgrClr); } catch (e:TypeError) { // If we get here, that means the downloaded text in xml file could // not be converted into an XML instance, probably because it's not // formatted correctly. trace("Could not parse text into XML"); trace(e.message); } } test(); } public function test():void { trace("Results of the test function:"); trace(backgrClr); } } } Results of the test function: 16777215 // значение переменной backgrClr вне вложенной функции 16711680 // значение переменной backgrClr внутри вложенной функции Буду признателен за совет.. Последний раз редактировалось iNils; 28.11.2010 в 14:30. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 3
|
Странно. Почему тогда trace(backgrClr) выдает правильное значение и в правильное время - перед методом test()? Если бы она выполнялась не сразу, неужели мы бы увидели значение, а не NaN? И еще вопрос - как еще можно считать переменные из xml файла и присвоить их переменным класса без использования loader.addEventListener(Event.COMPLETE.. и вложенной функции обработчика события?
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Где вы видите, что перед test()?
Содержимое метода Что мы видим первым в аутпуте? А уже потом приходит трейс после загрузки. Загрузка не бывает моментально, она всегда асинхронна выполнению кода. Без Event.COMPLETE не получится. А писать без вложенной функции надо так package { // Импортируем классы import flash.display.*; import flash.net.*; import flash.utils.*; import flash.events.*; public class chart extends Sprite { // Создаем переменную класса public var backgrClr:Number = 0xFFFFFF; public function chart() { var loader:URLLoader = new URLLoader ; var confdata:XML; loader.addEventListener(Event.COMPLETE,readxmlfile); // Загружаем xml файл с переменными инициализации; loader.load(new URLRequest("configuration.xml")); test(); } private function readxmlfile(event:Event):void { try { confdata = new XML(event.target.data); backgrClr = confdata.child("colors").child("backgr"); trace(backgrClr); } catch (e:TypeError) { // If we get here, that means the downloaded text in xml file could // not be converted into an XML instance, probably because it's not // formatted correctly. trace("Could not parse text into XML"); trace(e.message); } } public function test():void { trace("Results of the test function:"); trace(backgrClr); } } } |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 3
|
Спасибо. Моя вина, переклинило на порядке вывода в output
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|