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

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

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

Регистрация: Jul 2007
Сообщений: 44
По умолчанию Проблема с вложенностью объекта

У меня есть такой класс:
Код:
class MyClass
{
	private var Document:XML;

	public function MyCal(){}

	public function run()
	{
		this.Document = new XML();
		this.Document.onLoad = __onLoadFunction;
		this.Document.load("some.xml");
	}

	private function __onLoadFunction(success)
	{
		trace(this); traces XML why???
	}
}
Как видно приписываю хандлеру объекта XML приватную функцию из MyClass.

В этой __onLoadFunction функции this должно означать экзэмпляр MyClass, разве нет ??? Но trace() говорит что this означает экзэмпляр XML.

Ну да хрен с ним, пусть в __onLoadFunction оно означает Document (экзэмпляр XML class), тогда разве я не могу доступиться до экзэмпляра MyClass с помощью _parent?. trace() говорит что_parent undefined. Кроме того, не смотря на то, что trace(this) печатает сам XML документ, любой метод, к примеру this.load() уже не может быть найден, ничего не понимаю...

Как мне достучаться до экзэмпляра MyClass изнутри __onLoadFunction ?????


Последний раз редактировалось romantique; 13.07.2007 в 13:31.
Старый 13.07.2007, 12:37
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
все как написано:
onLoad (который у тебя ссылается на __onLoadFunction) вызывается в контексте Document..
_parent будет у Document, только если ты его сам определишь..
обычное решение:
Document.onLoad =mx.utils.Delegate.create(this, __onLoadFunction);

Старый 13.07.2007, 12:50
romantique вне форума Посмотреть профиль Отправить личное сообщение для romantique Найти все сообщения от romantique
  № 3  
Ответить с цитированием
romantique

Регистрация: Jul 2007
Сообщений: 44
Получается в контексте работы __onLoadFunction функции слово this означает именно Document??? Но тогда почему я не могу вызвать ничего от this??? К примеру getBytesTotal. А еще что странно вызывается только toString.

trace(this instanceof XML) говорит true.

Старый 13.07.2007, 12:55
romantique вне форума Посмотреть профиль Отправить личное сообщение для romantique Найти все сообщения от romantique
  № 4  
Ответить с цитированием
romantique

Регистрация: Jul 2007
Сообщений: 44
**Error** C:\Dev\ExPlain\SequenceLoader.as: Line 32: There is no method with the name 'mx'.
this._Document.onLoad = mx.utils.Delegate.create(this,this.__onLoadFunction);

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

Регистрация: Sep 2002
Сообщений: 30,787
romantique, синий цвет специально для того, чтобы сломать глаза читающим?

Старый 13.07.2007, 13:30
romantique вне форума Посмотреть профиль Отправить личное сообщение для romantique Найти все сообщения от romantique
  № 6  
Ответить с цитированием
romantique

Регистрация: Jul 2007
Сообщений: 44
Цитата:
romantique, синий цвет специально для того, чтобы сломать глаза читающим?
я думал форум белого цвета, забыл :-D

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

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

mx.utils.Delegate должен быть.

Старый 13.07.2007, 13:44
romantique вне форума Посмотреть профиль Отправить личное сообщение для romantique Найти все сообщения от romantique
  № 8  
Ответить с цитированием
romantique

Регистрация: Jul 2007
Сообщений: 44
И всё таки к вопросу: что значит this во время работы __onLoadFunction ???

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

Регистрация: Sep 2002
Сообщений: 30,787
В AS1/AS2 при присвоении метода одного объекта к другому, область видимости меняется на область видимости последнего. Для решения этой проблемы существует класс Delegate, пример использования которого уже написан.

Старый 13.07.2007, 13:54
romantique вне форума Посмотреть профиль Отправить личное сообщение для romantique Найти все сообщения от romantique
  № 10  
Ответить с цитированием
romantique

Регистрация: Jul 2007
Сообщений: 44
Встроенного почему то не было, нашёл код в глобе, заюзал! Спасибо огромное, дышется легче


Последний раз редактировалось romantique; 13.07.2007 в 14:18.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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