Форум 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=127252)

winbackgo 09.07.2009 01:28

Доступ к основным методам
 
Есть такая прога


mainApp.as
Код AS3:

package
{
        import flash.display.Sprite;
        import classes.exampleClass;
 
        public class mainApp extends Sprite
        {
                  public function mainApp():void
                  {
                          new exampleClass();
                  }
 
                  public function test():void
                  {
                  }
        }
}

classes/exampleClass.as
Код AS3:

package classes
{
        public class exampleClass
        {
                  public function exampleClass():void
                  {
                        // нужно вызвать test() из mainApp
                  }
        }
}

В flex можно заюзать Application.application.test() а тут как быть?

ramshteks 09.07.2009 01:37

А у вас есть метод test в mainApp?

winbackgo 09.07.2009 01:40

public function test():void

dimarik 09.07.2009 01:44

Код AS3:

new exampleClass(this);

Код AS3:

package classes {
        public class exampleClass {
                  public function exampleClass(target:mainApp) {
                        target.test();
                  }
        }
}


ramshteks 09.07.2009 01:46

тьфу ты...))

Вам для каких целей?


просто так в своем екземплклассе вы не сможете добраться до майн класса

там либо передавать ссылку, либо вы можете создать статичное свойство вроде такого

Код AS1/AS2:

package {
import flash.display.Sprite;
import flash.events.Event;
 
 
public class Main extends Sprite {
private static var _instance:Main;
 
public function Main():void {
_instance=this;
new exampleClass();
}
 
public function test():void{}
 
static public function get instance():Main { return _instance; }
}
 
}

ну а потом вызвать примерно так

Код AS3:

package classes
{
        public class exampleClass
        {
                  public function exampleClass():void
                  {
                        Main.instance.test()
                  }
        }
}

как то так... но по сути, как я понимаю это просто реализация флексового Application

winbackgo 09.07.2009 01:58

при инициализации флэш инициализирует mainApp и где-то ведь хранится ссылка на него. про передачу this я думал но тогда привязка класса к mainApp и если потом его использовать в другом проекте то надо переделывать. Мне вообще это нужно для создания функции дебаг и в классе проверить если она доступна то вызывать. А также для доступа к параметрам flashvars через loaderInfo. В mainApp доступно root.loaderInfo.parameters как до них добраться в exampleClass?

ramshteks 09.07.2009 02:01

ну по идее для доступа к флешворсам вам достаточно создать экземпляр LoaderInfo в вашем экземпеле и получить доступ к флеш ворсам. Для этого по крайней мере не нужна ссылка на документ класс

winbackgo 09.07.2009 02:31

что-то не сработало с instance. говорит что нулл. main = Main.inst(); а при вызове main.Log ругается что main null

ramshteks 09.07.2009 02:35

код ваш выложите

winbackgo 09.07.2009 02:41

Main.inst().Log работает

Добавлено через 2 минуты
ну че код, в конструкторе присвоил main = Main.inst() и не работало. Скорее всего конфликт main и Main. Ну не важно. Все равно я не нашел ответа на свой вопрос. http://www.flasher.ru/forum/showpost...31&postcount=6


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

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