Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Доступ к родителю из Xml объекта (http://www.flasher.ru/forum/showthread.php?t=50896)

okv 03.11.2003 14:52

Доступ к родителю из Xml объекта
 
Господа!

Чтo-то или я туплю или семерка глючит...

Создаем какой-то там класс

Код:

class MyClass {
        private _Prop1:String;
        private _Prop2:XML;

        function MyClass(){
              this._Prop2 = new XML();
              this._Prop2.onLoad = function(){
                        //И вот тут я не могу понять
              };
              this._Prop2.load("somexml.xml");
        }

}

//И вот тут я не могу понять как из события onLoad достучатся до экземпляра объекта который содержит этот XML?
this._parent дает undefined....
Может есть еще варианты или воркэраунды?

Baltika 03.11.2003 15:27

э...
чет я не догнал те надо до this._Prop2 достучаться или как ? :rolleyes:

okv 03.11.2003 15:31

До _Prop1:String у экземпляра этоого класса
Да и вообще до самого экземпляра :)

Baltika 03.11.2003 16:29

два раза не понял :/

изнутри конструктора достучаться ессно через this

Код:

class MyClass {
        private var _Prop1:String;
        private var _Prop2:XML;

        function CXML(){
              this._Prop2 = new XML();
              this._Prop2.onLoad = function(){
                        this._Prop1 = "POPA";
                        trace(this._Prop1);
              };
              this._Prop2.load("somexml.xml");
        }

}

или те снаружи(т.е. из кода, где выполняется создание экземпляра) нужно ?


okv 03.11.2003 16:35

:)
Ну вот смотри, я создаю класс, в нем свойство XML - типа у него обработчик события onLoad (все это в конструкторе)

Создаю экземпляр, гружу XML свойство...
Срабатывает событие onLoad, так вот мне надо из него достучаться к экземпляру.
This в данном случае это XML объект...
this._parent почему-то undefined

Baltika 03.11.2003 16:51

а....... вон оно чего...
задача понятна..
Код:

this._Prop2 = new XML();
this._Prop2.__proto__.Parent = this;
this._Prop2.onLoad = function(){
trace(this.Parent._Prop1);
}

ну, типа, так можно .... ;))

okv 03.11.2003 16:58

Да скорее всего это сработает :)
Я думал как сохранить эту ссылку, но прототип мне в голову не пришел :)))
Спасибо!
Но вроде раньше this._parent в таком случае ссылался на родительский объект или это работало только для мувиклипов?

llllllllll 03.11.2003 17:23

Baltika, все, что ты написал - не для АС2.0 :), какие this? какие proto? вы о чем? ;)

okv 03.11.2003 18:00

To llllllllll
Будешь смеяться, но все работает :D
Так что весь этот AS 2.0 это чистой воды косметика
"Если заглянуть в дыру, внизу все та же выгребная яма" (с) не помню откуда

Baltika 03.11.2003 18:10

2Забор

а чем те this в AS2 не угодил ?
прото - первое что пришло в голову %))

ЗЫ
с удовольствием познакомлюсь с другими вариантами .. :cool:

constantiner 03.11.2003 18:13

class MyClass {
private var _Prop1:String = "2";
private var _Prop2:XML;

function MyClass(){
_Prop2 = new XML();
var ref:MyClass = this;
this._Prop2.onLoad = function()
{
ref._Prop1 = "1";
trace ("In onLoad: " + ref._Prop1);
ref.traceProp1 ();
ref.traceProp1_prvt ();
};
this._Prop2.load("class_attendance_report.xml");
}

function traceProp1 ():Void
{
trace ("in public method: " + _Prop1);
}

private function traceProp1_prvt ():Void
{
trace ("in private method: " + _Prop1);
}

}

llllllllll 03.11.2003 18:30

This не мне не угодил :) - он не нужен нам при определении класса, зачем нам масло масленное?

constantiner 03.11.2003 18:40

А каким еще способом ссылаться на экземпляр самого себя? В том числе чтобы передавать эту ссылку куда-нибудь. Просвети?

okv 03.11.2003 18:41

To constantiner:

Круто!

Но возникает вопрос, почему ссылка ref работает при ее создании в конструкторе и не работает если создать ее в свойствах класса и в конструкторе только задать значение?

constantiner 03.11.2003 18:55

Даже так:

Код:

class MyClass {
        private var _Prop1:String = "2";
        private var _Prop2:XML;

        function MyClass(){
              _Prop2 = new XML();
                          var ref:MyClass = this;
              _Prop2.onLoad = function()
                          {
                      ref._Prop1 = "1";
                                          trace ("In onLoad: " + _Prop1);
                                          ref.traceProp1 ();
                                          ref.traceProp1_prvt ();
              };
              _Prop2.load("class_attendance_report.xml");
        }
               
                function traceProp1 ():Void
                {
                        trace ("in public method: " + _Prop1);
                }

                private function traceProp1_prvt ():Void
                {
                        trace ("in private method: " + _Prop1);
                }
}


llllllllll 03.11.2003 18:55

Цитата:

Оригинал написал(а) constantiner
А каким еще способом ссылаться на экземпляр самого себя? В том числе чтобы передавать эту ссылку куда-нибудь. Просвети?
Я не про ссылку на самого себя, а про избыточное использование ...

class MyClass {
private var _prop:Number;
function setProp(){
this._prop = Math.random();
}

}

this - тут не нужен :)

Baltika 03.11.2003 19:12

да, просто привык я this писать, т.к. пишу чаше на шарпе чем на ас

:cool:

ЗЫ нашел к чему придраться.. ;)

llllllllll 03.11.2003 19:23

Baltika - я не придераюсь, а лишь хочу разобраться, коль подвернулась такая возможность, потому как сам копать АС2.0 небуду :) - незачем он мне :)

Baltika 03.11.2003 19:32

Цитата:

Оригинал написал(а) llllllllll
Baltika ..потому как сам копать АС2.0 небуду :) - незачем он мне :)
аналогично .. :))


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

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