![]() |
|
||||||||||
|
|||||
|
Регистрация: 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???
}
}
В этой __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. |
|
|||||
|
все как написано:
onLoad (который у тебя ссылается на __onLoadFunction) вызывается в контексте Document.. _parent будет у Document, только если ты его сам определишь.. обычное решение: Document.onLoad =mx.utils.Delegate.create(this, __onLoadFunction); |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Получается в контексте работы __onLoadFunction функции слово this означает именно Document??? Но тогда почему я не могу вызвать ничего от this??? К примеру getBytesTotal. А еще что странно вызывается только toString.
trace(this instanceof XML) говорит true. |
|
|||||
|
Регистрация: 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); |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
romantique, синий цвет специально для того, чтобы сломать глаза читающим?
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не представляю, как можно было не заметить, что форум другого цвета.
mx.utils.Delegate должен быть. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
И всё таки к вопросу: что значит this во время работы __onLoadFunction ???
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В AS1/AS2 при присвоении метода одного объекта к другому, область видимости меняется на область видимости последнего. Для решения этой проблемы существует класс Delegate, пример использования которого уже написан.
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 44
|
Встроенного почему то не было, нашёл код в глобе, заюзал! Спасибо огромное, дышется легче
![]() Последний раз редактировалось romantique; 13.07.2007 в 14:18. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|