![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2007
Сообщений: 3
|
Подскажите как из обработчика события сохранить данные в свойство класса.
в fla файлике код такой: в классе loadinfo успешно загружаем xml, видим его структуру дальше хотелось бы передать данные в класс для дальнейшей обработки а не получается. Видим "Hi, there!" вместо "Hi, all!" Подскажите, пожалуйста - где грабли? package test{
public class loadinfo {
import flash.events.*;
import flash.errors.*;
import flash.net.*;
public var testinfo:String;
public function loadinfo():void {
this.testinfo = "Hi there!"; // задаем значение
var xmlLdr:URLLoader = new URLLoader();
xmlLdr.addEventListener("complete", completeLoadXML);
xmlLdr.load(new URLRequest("info_list.xml"));
}
private function completeLoadXML(event:Event):void {
try {
var info_xml:XML;
info_xml = new XML(event.target.data);
//trace(info_xml);
this.testinfo = "Hi all!"; // пытаемся переопределить значение
} catch (error:Error) {
trace(error.message);
}
}
}
}
|
|
|||||
|
во fla никто код не пишет
|
|
|||||
|
Цитата:
![]() 2apetrusha Посмотрите на свой конструктор this.testinfo = "Hi there!"; // задаем значение
var xmlLdr:URLLoader = new URLLoader();
xmlLdr.addEventListener("complete", completeLoadXML);
xmlLdr.load(new URLRequest("info_list.xml"));
В третьей добаляете обработчик который менят это значение. Сразу после создания loadinfo в главном тайм лайне вы вызываете свойство testinfo. Конечно же оно не изменится, т.к. completeLoadXML будет вызвана лишь спустя определённый промежуток времени. Когда xml файл будет загружен. Это происходит не сразу, т.к. загрузка асинхронна с кодом. Попробуйет добавить trace в этот обработчик, и со временем всё станет понятно: package test{
public class loadinfo {
import flash.events.*;
import flash.errors.*;
import flash.net.*;
public var testinfo:String;
public function loadinfo():void {
this.testinfo = "Hi there!"; // задаем значение
var xmlLdr:URLLoader = new URLLoader();
xmlLdr.addEventListener("complete", completeLoadXML);
xmlLdr.load(new URLRequest("info_list.xml"));
}
private function completeLoadXML(event:Event):void {
try {
var info_xml:XML;
info_xml = new XML(event.target.data);
//trace(info_xml);
this.testinfo = "Hi all!"; // пытаемся переопределить значение
trace(this.testinfo);
} catch (error:Error) {
trace(error.message);
}
}
}
}
Последний раз редактировалось miramax; 03.06.2007 в 19:16. |
|
|||||
|
Регистрация: May 2007
Сообщений: 3
|
Спасибо, Miramax!
Примерно к такому выводу я и пришел. Изменил в обработчике значение и там его вызвал, при этом оставил trace в главной функции класса. Придется привыкать к асинхронности flash и выстраивать логические цепочки соответсвенно его модели поведения. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Вдогонку: имена классов должны начинаться с прописной буквы, ни больше, ни меньше.
|
|
|||||
|
Регистрация: May 2007
Сообщений: 3
|
Очень приятно, когда мудрые профи помогают найти правильную дорогу новичкам.
Особенно miramax за ее терпение и __etc за то, что акцентирует внимание на важности правильного оформения кода. Не только в этой ветке но и на других. Не все понятно с первого раза, но время и терпение расставит все по местам. А ваша помощь - как нить ариадны в лабиринте. Flash help достаточно объемная книжица, но иногда примеры обходят самые интересные вопросы, такие, например, как правильная загрузка последовательности внешних ресурсов итп. P.S. Есть электронные версии ActionScript 3.0 Cookbook - ISBN 0596526954.chm ActionScript Cookbook - ISBN 0596004907.chm издательства Oreilly (там много другой инфы на 1,9Гб) |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|