Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.06.2007, 18:33
apetrusha вне форума Посмотреть профиль Отправить личное сообщение для apetrusha Найти все сообщения от apetrusha
  № 1  
Ответить с цитированием
apetrusha

Регистрация: May 2007
Сообщений: 3
По умолчанию область видимости в обработчике

Подскажите как из обработчика события сохранить данные в свойство класса.

в fla файлике код такой:

Код:
import test.loadinfo;
var myinfo = new loadinfo();
trace(myinfo.testinfo);
в классе 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);
      }
    }
  }
}

Старый 03.06.2007, 18:36
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 2  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
во fla никто код не пишет

Старый 03.06.2007, 19:06
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 3  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Цитата:
Сообщение от BigDan
во fla никто код не пишет
Я пишу
2apetrusha
Посмотрите на свой конструктор
Код:
        this.testinfo = "Hi there!"; // задаем значение
        var xmlLdr:URLLoader = new URLLoader();
        xmlLdr.addEventListener("complete", completeLoadXML);
        xmlLdr.load(new URLRequest("info_list.xml"));
В первой строке вы назначаете переменной testinfo значение "Hi there".
В третьей добаляете обработчик который менят это значение.
Сразу после создания 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);
      }
    }
  }
}
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©


Последний раз редактировалось miramax; 03.06.2007 в 19:16.
Старый 03.06.2007, 19:39
apetrusha вне форума Посмотреть профиль Отправить личное сообщение для apetrusha Найти все сообщения от apetrusha
  № 4  
Ответить с цитированием
apetrusha

Регистрация: May 2007
Сообщений: 3
Спасибо, Miramax!
Примерно к такому выводу я и пришел. Изменил в обработчике значение и там его вызвал, при этом оставил trace в главной функции класса. Придется привыкать к асинхронности flash и выстраивать логические цепочки соответсвенно его модели поведения.

Старый 04.06.2007, 04:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Вдогонку: имена классов должны начинаться с прописной буквы, ни больше, ни меньше.

Старый 06.06.2007, 01:53
apetrusha вне форума Посмотреть профиль Отправить личное сообщение для apetrusha Найти все сообщения от apetrusha
  № 6  
Ответить с цитированием
apetrusha

Регистрация: 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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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