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

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

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

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
По умолчанию Доступ из класса в класс

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

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

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


Последний раз редактировалось etc; 18.01.2007 в 15:31.
Старый 18.01.2007, 16:01
Futs вне форума Посмотреть профиль Отправить личное сообщение для Futs Найти все сообщения от Futs
  № 3  
Ответить с цитированием
Futs
 
Аватар для Futs

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
Там написано "это сможет поянть даже контуженый инвалид" очевидно это я и есть. По сути ничего не изменилось из первого доступ есть, из второго нет.

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

Регистрация: Sep 2002
Сообщений: 30,787
Я же говорю — сделать обоих вещателями.
A создает B, подписывает B на свои события и сам подписывается на события B. Вот тебе и двусторонняя связь.

Старый 18.01.2007, 16:29
Futs вне форума Посмотреть профиль Отправить личное сообщение для Futs Найти все сообщения от Futs
  № 5  
Ответить с цитированием
Futs
 
Аватар для Futs

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
Код:
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 из функции он все равно ругается

Старый 18.01.2007, 17:01
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а ругается случаем не на то, что у Class1 нет статического fun1() ?

Старый 18.01.2007, 17:18
Futs вне форума Посмотреть профиль Отправить личное сообщение для Futs Найти все сообщения от Futs
  № 7  
Ответить с цитированием
Futs
 
Аватар для Futs

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
Цитата:
Сообщение от silin
а ругается случаем не на то, что у Class1 нет статического fun1() ?
Да так и ругается, но я не могу ее сделать статической

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

Регистрация: Sep 2002
Сообщений: 30,787
Нет-нет.

Код:
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);


Последний раз редактировалось etc; 08.02.2007 в 23:39.
Старый 18.01.2007, 17:23
Futs вне форума Посмотреть профиль Отправить личное сообщение для Futs Найти все сообщения от Futs
  № 9  
Ответить с цитированием
Futs
 
Аватар для Futs

Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
Да мудрено, буду разбираться, спасибо, где этому учат?

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

Регистрация: Sep 2002
Сообщений: 30,787
Здесь

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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