Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Доступ из класса в класс (http://www.flasher.ru/forum/showthread.php?t=90800)

Futs 18.01.2007 15:20

Доступ из класса в класс
 
Есть два класса из одного вызываю функцию в другом, а потом хочу из другого вызвать функцию из первого - не получается.
Где можно почитать о правильной иерархии, или как это называется, классов, у Мука совсем мало об этом, или я не правильно понимаю суть проблемы?

etc 18.01.2007 15:29

Связать классы подпиской на события друг-друга, например.
Или почитай про IoC/DI: http://orangeflash.eu/?p=79

Futs 18.01.2007 16:01

Там написано "это сможет поянть даже контуженый инвалид" очевидно это я и есть. :( По сути ничего не изменилось из первого доступ есть, из второго нет.

etc 18.01.2007 16:05

Я же говорю — сделать обоих вещателями.
A создает B, подписывает B на свои события и сам подписывается на события B. Вот тебе и двусторонняя связь.

Futs 18.01.2007 16:29

Код:

class Class1{
    public function fun1() {
    //бла-бла
  }
    public function fun2() {
    //бла-бла
    Class2.fun3(arg)
  }
}
//
class Class2{
    public static function fun3(arg) {
    //бла-бла
    if(бла-бла){
        Class1.fun1()
    }
  }
}

Вот как сейчас есть, если я в первом классе напишу
private var b:Class2 и из Class2 уберу static из функции он все равно ругается

silin 18.01.2007 17:01

а ругается случаем не на то, что у Class1 нет статического fun1() ?

Futs 18.01.2007 17:18

Цитата:

Сообщение от silin
а ругается случаем не на то, что у Class1 нет статического fun1() ?

Да так и ругается, но я не могу ее сделать статической

etc 18.01.2007 17:20

Нет-нет.

Код:

import mx.events.EventDispatcher;
class AnyClass {
    public var addEventListener:Function;
    public var removeEventListener:Function;
    public var dispatchEvent:Function;

    public function AnyClass(otherClass:OtherClass) {
        EventDispatcher.initialize(this);
        this.addEventListener("onAnyClassEvent",otherClass);
        otherClass.addEventListener("onOtherClassEvent",this);

        this.sendMessage();
    }

    private function sendMessage():Void {
        this.dispatchEvent({type:'onAnyClassEvent',data:'test'});
    }

    private function onOtherClassEvent(event:Object):Void {
        trace('Class AnyClass received event from OtherClass data: '+event.data);
    }
}

Код:

import mx.events.EventDispatcher;
class OtherClass {
    public var addEventListener:Function;
    public var removeEventListener:Function;
    public var dispatchEvent:Function;

    public function OtherClass() {
        EventDispatcher.initialize(this);
    }

    private function onAnyClassEvent(event:Object):Void {
        trace('Class OtherClass received event from AnyClass data: '+event.data);
        this.dispatchEvent({type:'onOtherClassEvent',data:'hello'});
    }
}

Код:

var otherClass:OtherClass = new OtherClass();
var anyClass:AnyClass = new AnyClass(otherClass);


Futs 18.01.2007 17:23

Да мудрено, буду разбираться, спасибо, где этому учат? :)

etc 18.01.2007 17:26

Здесь :D


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

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