Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ссылка на объект другого класса (http://www.flasher.ru/forum/showthread.php?t=137596)

treety 17.03.2010 18:05

Ссылка на объект другого класса
 
Как классу передать ссылку на объект содержащийся в другом классе?

не то чтобы:
Код AS3:

class AClass {
        var a_object:Object;
        function AClass (){
                ...
        }
}

Код AS3:

import AClass;
class BClass{
        function BClass {
                var obj = {b:1};
                AClass.a_object = obj;//т.е. как обойтись без такой записи?
        }
}

а как это сделать если BClass даже и не знает AClass..где он и что он..
другими словами как сослаться на a_object?
зы. объяснил конечно криво..но как смог

Obi 17.03.2010 18:36

А вы, простите, на какой версии языка писать пытаетесь?

treety 17.03.2010 18:53

Цитата:

Сообщение от Obi (Сообщение 893720)
А вы, простите, на какой версии языка писать пытаетесь?

судя по ветке форму - AS3
или я что то не так написал в коде?

etc 17.03.2010 20:51

А написали в лучшем случае AS2-код.

expl 17.03.2010 21:28

Вы бы ситуацию, в которой возникает такая необходимость описали,
т.к. тут подходят советы начиная "Раз BClass не знает о AClass - то путь AClass сам возьмет это значение" и заканичивая рассылкой собитий и инверсией контроля =).

treety 17.03.2010 23:26

Цитата:

А написали в лучшем случае AS2-код.
ну я не стал заморачиваться на AS3 форматирование
схема же понятна..вроде..=)
Цитата:

Вы бы ситуацию, в которой возникает такая необходимость описали,
т.к. тут подходят советы начиная "Раз BClass не знает о AClass - то путь AClass сам возьмет это значение"...
в данном случае не хотелось бы чтобы AClass брал сам значение
тк. значение может динамически меняться и взятое AClass'ом значение
может случиться не актуальным
Цитата:

...и заканичивая рассылкой собитий и инверсией контроля =).
ухх..это для меня вообще тёмный лес =)

вобщем ситуация такая
я хочу записать параметр в объект который расположен в другом классе
(в моём примере конечно объект полностью перезаписывается,
но суть думаю понятна)
причём не должно иметь значение имя класса и пр.
пример: класс получил ссылку куда записывать какой-либо результат
и по этой ссылке он собственна и записывает его
без указания и импорта конкретного класса

у меняже получалось что вместо ссылки класс получал экземпляр объекта
..или как там правильно..

Obi 18.03.2010 10:40

Код AS3:

class A {}
 
class B {
  private var _a:A;
  public function B(a:A) {
      _a = a;
  }
}
 
var a:A = new A();
var b:B = new B(a);


treety 18.03.2010 14:27

Цитата:

Сообщение от Obi (Сообщение 893881)
Код AS3:

class A {}
 
class B {
  private var _a:A;
  public function B(a:A) {
      _a = a;
  }
}
 
var a:A = new A();
var b:B = new B(a);


но при такой записи всё равно нужно будет импортировать класс A в класс B
иначе: "Type was not found or was not a compile-time constant: A"
попробую немного по другому объяснить

Код AS3:

class A {
        var a_object:Object;
        function A (){
                a_object = {val_1:true, val_2:20, val_3:aClassFunction};
                //для примера объект содержит всякую всячину..
        }
        function aClassFunction (){}
}
 
class B{
        var b_object:Object;
        function B (){
                b_object = {val_1:false, val_2:-10};
}        }
 
//!!в класс Main никакой из выше описанных классов не импортируется
class Main{
        var main_boolean:Boolean;
        var main_number:Number;
        function Main (ссылка_на_объект_1, ссылка_на_объект_2){
 
                main_boolean = ссылка_на_объект_1.a_object.val_1;
                //для примера как мне считать из класса A значение a_object.val_1?
 
                main_number = 50;
                ссылка_на_объект_2.b_object.val_2 = main_number;
                //и для примера как мне записать значение
                //main_number в объект b_object.val_2 класса B?
}        }
 
var tmp:Main = new Main (ссылка_на_объект_1, ссылка_на_объект_2);
//так вот как этот "код" написать так чтобы он работал?


Котяра 18.03.2010 15:25

Цитата:

main_boolean = ссылка_на_объект_1.a_object.val_1;
//для примера как мне считать из класса A значение a_object.val_1?
Код AS3:

main_boolean = ссылка_на_объект_1["a_object"]["val_1"];

тольько плохо это - могут возникнуть ошибки времени выполнения и читают не из класса , а из объекта(экземпляра) класса
если не хотите импортировать СlassB в Main (например если СlassB - объект из другой swf)
используйте интерфейсы
Код AS3:

class Main{
        var main_boolean:Boolean;
        var main_number:Number;
        function Main (objA:IAClass, objB:IBClass){
..
}

соответственно
Код AS3:

 AClass implements IAClass
BClass implements IBClass


treety 18.03.2010 15:44

надо запробовать вариант

но тут вопрос в другом
в данном примере передаются объект/переменные/и тп.:
Код AS3:

var tmp:Main = new Main (объект_1, объект_2);

а мне нужно чтобы в Main они были именно ссылками..

те. такая запись работает
Код AS3:

main_boolean = ссылка_на_объект_1["a_object"]["val_1"];

но как мне передать именно ссылку на объект, а не объект в "ссылка_на_объект_1"?


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

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