Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [...] RobotLegs2 объявление классов (http://www.flasher.ru/forum/showthread.php?t=202590)

Akopalipsis 25.07.2013 21:40

RobotLegs2 объявление классов
 
Не могу до конца разобраться и не могу не чего найти по вопросу, что именно делают методы в конце карты внедрения:
Код AS3:

1)super.injector.map(Class).asSingleton
2)super.injector.map(Class).getProvider
3)super.injector.map(Class).hasProvider
4)super.injector.map(Class).locally
5)super.injector.map(Class).seal
6)super.injector.map(Class).setInjector
7)super.injector.map(Class).softly
8)super.injector.map(Class).toProvider
9)super.injector.map(Class).toSingleton
10)super.injector.map(Class).toType
11)super.injector.map(Class).toValue
12)super.injector.map(Class).unseal

Стараюсь как могу, но тут упераюсь в тотальное отсутствие документации с описанием. Примеры с гигхаба помогают, но мало. Я немного понимаю о этом и руководства из первой версии, эти методы указывают как создавать экземпляр и сколько раз. Но на этом понимание останавливаются.

Добавлено через 2 часа 34 минуты
По своей глупости я не правильно задал вопрос, это вообще не относится к RL2, это из SwiftSuspenders.
Если кто то знает где можно почитать про SwiftSuspenders 2 дайте пожалуйста ссылку.
Очень хочу освоить RL2, но четвёртый день просто до сумашествия без прорыва.

TWETTI 26.07.2013 21:21

Здесь есть описание всех этих методов.

Если написать
Код AS3:

injector.map(YourClass).asSingleton();

то при запросе YourClass, всегда будет возвращается один единственный экземпляр этого класса.

Если написать
Код AS3:

injector.map(YourClass).toValue(new SomeValue);

то при запросе YourClass, всегда будет возвращается единственный экземпляр класса, который был указан в скобках toValue.

Если написать
Код AS3:

injector.map(YourClass).toType(BetterClass);

то при запросе YourClass, всегда будет возвращается новый экземпляр класса, который был указан в скобках toType.

Вот, что нашел в интернете:
Код AS3:

injector.map(YourClass); //current equivalent: injector.mapClass(YourClass, YourClass);
injector.map(YourClass, 'name'); //current equivalent: injector.mapClass(YourClass, YourClass, 'name');
injector.map(YourClass).to(YourClass); //equivalent to the first mapping (i.e.: optional)
injector.map(YourClass, 'name').to(YourClass); //equivalent to the second mapping (i.e.: optional)
injector.map(YourInterface).toType(YourClass); //current equivalent: injector.mapClass(YourInterface, YourClass);
injector.map(YourClass).asSingleton(); //current equivalent: injector.mapSingleton(YourClass);
injector.map(YourInterface).toType(YourClass).asSingleton(); //current equivalent: injector.mapSingletonOf(YourInterface, YourClass);
injector.map(YourInterface).toValue(value); //current equivalent: injector.mapValue(YourInterface, value);
var request : InjectionRequest = injector.map(YourClass); //current equivalent: var request : InjectionConfig = injector.getMapping(YourClass);

Полезно, если знаете Robotlegs 1.

P.S. Остальные методы не так важны для изучения RL2.

Akopalipsis 26.07.2013 22:42

TWETTI Большое Вам Спасибо! Сейчас продолжу изучение класса который находится по Вашей ссылке. Продолжу, это по тому, я мельком его уже сегодня пробежал, точнее сказать пытался перевести гуглом, но этот перевод плодовитым не оказался. В общем разрываюсь между классами,
примерами на гигхабе и.. и всё, больше нет не чего! Чтобы лучше обрисовать свою ситуацию - представьте, что я только начал изучать as3, но у меня не было как у всех первых игр сделаных не по шаблонам, не первых сайтов, а вместо этого я сразу начал учить MVC, которую как надеюсь понял. И в тот самый момент, как мне показалось что я понял, я услышал про RL2. И вот теперь я кое как, маленькими шагами приближаюсь к самому началу постижение этого фрейворка. Тяжело только из-за отсутствия информации. Сами авторы говорят, что вторая версия создана для тех кто учился на первой версии и что не каких других хелпов и книг уже не будет. Советуют учится на том что есть. Если подытожить все сказанное, то получится - если Вы увидели вопрос в этой теме и у Вас есть время, то не проходите мимо, потому что как сами понимаете, больше помощи ждать и искать особо неоткуда.
Цитата:

Вот, что нашел в интернете:
я тоже натыкался на этот код на каком то полукитайском сайте и скопировал просто в блокнот, думая что когда нибудь это может завершить сложения пазла.
И ещё есть один вопрос:
Цитата:

то при запросе YourClass, всегда будет возвращается один единственный экземпляр этого класса.
то есть, во всем приложении создаться только один экземпляр этого класса и при последующих обращениях\внедрениях экземпляров уже создаваться не будет? Как бы оператора new уже не будет?
И поправьте меня если я ошибаюсь:
Код AS3:

injector.map(YourClass).toValue(new SomeValue);

при обращении к классу YourClass, а если быть точным
Код AS3:

package  
{
        public class MyClass
        {
                /**
                * по запуску класса Contex он внедрит в это класс
                * новый экземпляр класса YourClass. То есть он создаст где то в своей памяти
                * новый экземпляр класса и при каждом обращении к этому ( MyClass ) классу
                * больше не будет создавать новый\очередной экземпляр класса YourClass ?
                * или он будет при каждом обращении к классу MyClass создавать очередной
                * экзепляр класса YourClass, а затем удалять его и так всегда?
                */

                [Inject]
                public var _yourClass:YourClass;
 
                public function MyClass()
                {
 
                }
                overide public function initialize():void
                {
                        //и здесь обращусь к методам класса YourClass
                }
 
        }
 
}

Код AS3:

injector.map(YourClass).toSingleton(IYourClass);

при обращении к классу YourClass будет всегда возвращать один и тот же экземпляр IYourClass

TWETTI 26.07.2013 23:24

Цитата:

то есть, во всем приложении создаться только один экземпляр этого класса и при последующих обращениях\внедрениях экземпляров уже создаваться не будет? Как бы оператора new уже не будет?
Да. Это называется синглтон. Есть такой шаблон проектирования.

Цитата:

И поправьте меня если я ошибаюсь:
Ошибаетесь. Не по запуску класса Context, а при создании класса MyClass. И в момент инъекцкии переменной _yourClass будет происвоен экземпляр класса YourClass, который мы передали здесь:
Код AS3:

injector.map(YourClass).toValue(new SomeValue);

Или так:
Код AS3:

// Создаем некий класс и меняем его состояние:
var some:YourClass = new YourClass();
some.someVar = 1234;
some.someAction();
// Указываем, что при запросе YourClass отдавать экземпляр some.
injector.map(YourClass).toValue(some);

Код AS3:

package  
{
        public class MyClass
        {
                [Inject]
                public var yourClass:YourClass;
 
                public function MyClass()
                {
 
                }
 
                overide public function initialize():void
                {
                        trace(yourClass.someVar); // Выведет 1234
                }
        }
}

P.S. Может вам стоить изучить RL1. По нему книги есть и уроки. А потом уже перейти на RL2? Могу книжечку продать если знаете английский.

Добавлено через 9 минут
Цитата:

injector.map(YourClass).toSingleton(IYourClass);
при обращении к классу YourClass будет всегда возвращать один и тот же экземпляр IYourClass
Нет. IYourClass не класс, а интерфейс. Поменяйте класс и интерфейс местами.

Пример:
Код AS3:

injector.map(IGalleryImageService).toSingleton(FlickrImageService);

При запросе IGalleryImageService будет возвращаться FlickrImageService;

Akopalipsis 26.07.2013 23:38

Цитата:

Да. Это называется синглтон. Есть такой шаблон проектирования.
Знаю такой. Просто переспросил, чтобы быть уверенным. Наверное по этому и рекомендуют отказаться от инициализации в конструкторах.
Цитата:

P.S. Может вам стоить изучить RL1. По нему книги есть и уроки. А потом уже перейти на RL2? Могу книжечку продать если знаете английский.
А оно так на то и получается, не как не разберёшься сразу со второй версией. А книгу... я не люблю английский, да и информации как таковой много, но вот перевод... Только сегодня узнал, что словосочетание "Синтаксический сахар" - это не ошибка гугла переводчика.
Спасибо Вам Большое за помощь! Пошёл переводить весь класс InjectionMapping... удачи мне..

TWETTI 26.07.2013 23:41

Зачем вам сейчас MVC и Robotlegs? Вы же только начали изучать AS3. И зачем изучать, переводить все классы фреймворка? Я за 2 года разработки на RL использовал только asSingleton.

Akopalipsis 26.07.2013 23:59

Цитата:

Зачем вам сейчас MVC и Robotlegs?
А я не знаю, что мне ещё учить.
Цитата:

И зачем изучать, переводить все классы фреймворка?
Причина - я не знаю, что мне от туда может понадобиться, а изучая примеры, я от примера к примеру сталкивался с самописными классами, которые и так уже реализованы в RL2. И может я ошибаюсь, но у меня при просмотре множества примеров, складывалось впечатление, что монстра RL используют только из-за инжекта, который если я опять таки не ошибаюсь есть в чистом виде во фреймворке SwiftSuspenders 2.

Добавлено через 3 минуты
И возможно у Вас знакомство происходило после чтения книги и Вы уже знали, что Вам надо.
А я читаю ту же книгу, но из-за неоднозначного перевода приходится все сразу смотреть, и примеры и классы. Потом разумеется я буду думать, что за чем мне это все надо было, точно так же как я сейчас вспоминаю, как в самом начале я все в тетрадке записывал. Сейчас смешно, а тогда казалось, что ИМЕННО ТАК И НУЖНО )))

TWETTI 27.07.2013 00:15

Ответил вам в другой теме про RL2.
http://www.flasher.ru/forum/showthread.php?t=202436

Akopalipsis 27.07.2013 16:05

В чем я ошибаюсь?
Код AS3:

                public function MainConfig(stage:Stage ,contextView:DisplayObjectContainer) 
                {
                        super.initialize();
                        super.configure(new ContextView(contextView));
                        injector.map(ClassA).asSingleton();
                        var myClass:ClassC = new ClassC();
                        myClass.num = 555;
                        injector.map(ClassC).toValue(myClass);
                        injector.injectInto(myClass);
                        super.injector.instantiateUnmapped(ClassA);
 
                }

Код AS3:

package  
{
        public class ClassC
        {
 
                public var num:int = 0;
 
                public function ClassC()
                {
                        //               
                }
 
        }
 
}

Код AS3:

package  
{
        import robotlegs.bender.framework.impl.Context;
        public class ClassA
        {
                [Inject]
                public var _c:ClassC;
 
                private var _context:Context;
 
                public function ClassA()
                {
                        _context = new Context();
                        _c = _context.injector.instantiateUnmapped(ClassC);
                        trace(_c.num);//why the value is not 555?
                }
 
        }
 
}

Добавлено через 2 минуты
Цитата:

А вы уже всё остальное выучили?)
Всё выучить наверное невозможно, выучил лишь на столько, на сколько могу найти применение.
Цитата:

Всеми возможными путями найдите какой-нибудь вам интересный(!) проект,
Вы наверное не подумали, что я ещё маленький)

TWETTI 27.07.2013 16:38

Не понятно ничего. Напишите подробно, что вы хотите сделать.
Почему класс ClassA содержит в себе иниализацию класса Context? [Inject] можно использовать только после того, как Context будет создан.

Akopalipsis 27.07.2013 16:53

Цитата:

Почему класс ClassA содержит в себе иниализацию класса Context?
Это я в своих экспериментах зашёл слишком далеко..
Цитата:

Не понятно ничего. Напишите подробно, что вы хотите сделать.
Хочу на маленьком примере увидеть, как изменяется экземпляр класса.
Код AS3:

package  
{
        import flash.display.DisplayObjectContainer;
        import flash.display.Stage;
        import flash.events.Event;
        import robotlegs.bender.extensions.contextView.ContextView;
        import robotlegs.bender.framework.impl.Context;
 
        public class MainConfig extends Context
        {
                public var _contextView:DisplayObjectContainer;
                public var _stage:Stage;
 
                public var myClass:ClassC;
 
 
                public function MainConfig(stage:Stage ,contextView:DisplayObjectContainer)
                {
                        super.initialize();
                        super.configure(new ContextView(contextView));
                        injector.map(ClassA).asSingleton();
                        //создаю экземпляр класса ClassC
                        myClass = new ClassC();
                        //присваиваю значение его свойству num
                        myClass.num = 555;
                        //связываю класс ClassC с его экземпляром myClass
                        injector.map(ClassC).toValue(myClass);
                        //инжектирую
                        injector.injectInto(myClass);
                        //и тут пока готовой модели ещё нет я просто вызываю ClassA
                        super.injector.instantiateUnmapped(ClassA);
 
                }
 
        }
 
}

Код AS3:

package  
{
        public class ClassA
        {
                [Inject]
                public var _c:ClassC;
 
 
                public function ClassA()
                {
                        _c = new ClassC();
                        trace(_c.num);//0
                }
 
        }
 
}

Код AS3:

package  
{
        public class ClassC
        {
 
                private var _num:int;
 
                public function ClassC()
                {
                        //
                }
                public function set num(value:int):void
                {
                        this._num = value;
                }
                public function get num():int
                {
                        return this._num;
                }
 
        }
 
}

Добавлено через 3 минуты
Цитата:

и вполне связно выражаете мысли,
Обычно все говорят - что мы тебя не понимаем... Но если Вы так сказали, то наверное это то самое влияние форума. Читаю Вас и учусь.

Akopalipsis 27.07.2013 17:51

okouser Спасибо Вам Большое! я сейчас это буду переваривать и потом повторю благодарности вместе в вопросами. Но прежде мне вот что хочется узнать, наверняка вы сталкивались с этим. Каждый раз, когда я запускаю в дебаге рабочий код RL, то в первый раз все хорошо, но во второй и все последующие вылазиет ошибка
Цитата:

Error: Comparison method violates its general contract!
Build halted with errors (fcsh).
и так и будет если не нажать shift+f8. Что это такое? ( ide flashdevelop ).

TWETTI 27.07.2013 18:03

Akopalipsis, это наверно из-за того, что у вас Java 7. Верно? Если да, то попробуйте удалить 7-ю версию и поставьте 6-ю версию.

Akopalipsis 27.07.2013 19:11

Цитата:

это наверно из-за того, что у вас Java 7. Верно?
Да! Сейчас буду разбираться.
Код AS3:

такие как Flash Builder.

Если сказать почему мне нравиться FD - то это его быстрая загрузка.
Если сказать почему я не использую
Код AS1/AS2:

_.F.B._ - _н.а_л.и.ц.е.н.зи.ю_н.е.т_д.е.н.е.г_,_а_..._у_м.е.н.я_п.о.ч.е.м.у_т.о_с.л.е.т.а.е.т_


Akopalipsis 29.07.2013 02:03

А может кто нибудь подсказать как лучше инициализировать контроллер?
Когда в обычной ситуации, то в главном классе Main создают экземпляр и передают в контроллер ссылку new Controller(this) и вся конструкция запускается. Но почему то мне кажется, что в RL2 это организовывают иначе. И по этому я целый день ищу ответ... Узнал много интересного, но на свой вопрос так и не смог однозначно ответить.

Akopalipsis 29.07.2013 02:31

Цитата:

Я же вам пример писал по RL2. Там вся инициализация последовательно приведена.
Вы на меня не сердитесь!)
Цитата:

Контроллер в RL в общем случае может быть достаточно неопределенным понятием.
Вот это меня и смущает, я не могу до конца логику прочувствовать. Класса вью, как привычного мне, нет. Есть ContextView, который хранит ссылку на отображение. Но как запустить отображение без контроллера я не понимаю. Всё равно же должен быть какой то класс который добавляет обьекты в список отображения.

TWETTI 29.07.2013 13:14

Цитата:

А может кто нибудь подсказать как лучше инициализировать контроллер?
Как такового контроллера в Robotlegs нет. Обычно, это класс Command.

Цитата:

Вот это меня и смущает, я не могу до конца логику прочувствовать. Класса вью, как привычного мне, нет. Есть ContextView, который хранит ссылку на отображение. Но как запустить отображение без контроллера я не понимаю. Всё равно же должен быть какой то класс который добавляет обьекты в список отображения.
Код AS3:

contextView.view.addChild(new MainView());

MainView это ваш главный View. В него вы добавляете остальные View'шки.

Akopalipsis 29.07.2013 14:48

Цитата:

contextView.view.addChild(new MainView());
А где его лучше добавлять в конфиге, где устанавливаешь связи или в отдельном command по завершению инициализации всех классов?

TWETTI 29.07.2013 14:51

В конфиге.

Akopalipsis 29.07.2013 14:52

Спасибо Вам обоим за помощь!

Akopalipsis 29.07.2013 21:24

Цитата:

и ContextView должен быть проинициализирован с помощью представления еще до исполнения команд конфига.
я не совсем понял, это приблизительно так ?
Код AS3:

private function startup(view:DisplayObjectContainer):void
{                               
    context = new Context().install(MVCSBundle).configure(MainConfig,new MainView( new Contex(view)));       
}


okouser 29.07.2013 22:22

именно

Akopalipsis 30.07.2013 01:45

okouser Спасибо! А не подскажете, почему AppConfig перестал инициализироваться?
Код AS3:

_context = new Context().install(MVCSBundle).configure(AppConfig , new MainView( new ContextView(view) ) );


Akopalipsis 30.07.2013 02:16

Код AS3:

package  
{
        import flash.events.MouseEvent;
        import robotlegs.bender.extensions.contextView.ContextView;
        import view.components.BollMediator;
        import controller.MainController;
        import model.MainModel;
        import robotlegs.bender.extensions.eventCommandMap.api.IEventCommandMap;
        import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap;
        import robotlegs.bender.framework.api.IConfig;
        import robotlegs.bender.framework.api.IInjector;
        import view.components.Boll;
        import view.MainView;
 
        public class AppConfig implements IConfig
        {
                [Inject]
                public var injector:IInjector;
 
                [Inject]
                public var mediatorMap:IMediatorMap;
 
                [Inject]
                public var commandMap:IEventCommandMap;
 
 
                public function configure():void
                {
                        //controller
                        injector.map(MainController).asSingleton();
 
                        //model
                        injector.map(MainModel).asSingleton();
 
                        //view
                    injector.map(MainView).asSingleton();
                        commandMap.map(MouseEvent.MOUSE_MOVE).toCommand(MainCommand);
                        mediatorMap.map(Boll).toMediator(BollMediator);
                }
 
        }
 
}

Добавлено через 7 минут
Весь день только этим вопросом и занимаюсь. Сначала в голову пришло, что это два разных обьекта. Начал пробовать с [PostConstruct] играть - не получилось. А все следующие действия лишь повторяли то, что с Вашими словами не вяжется.

Добавлено через 8 минут
Все остальные классы из конфига идентичны Вашим. я так и не продвинулся.

Akopalipsis 30.07.2013 14:19

Цитата:

и ContextView должен быть проинициализирован с помощью представления еще до исполнения команд конфига.
Цитата:

я не совсем понял, это приблизительно так ?
Код AS3:

private function startup(view:DisplayObjectContainer):void
{                               
    context = new Context().install(MVCSBundle).configure(MainConfig,new MainView( new ContexОпечатка(view)));       
}

Цитата:

именно
Цитата:

Кстати, а что это за конструкция
new MainView( new ContextView(view) )
?
Добавлено через 17 минут
Тут наверное мне надо сказать ещё раз о своём малоумие и что мы друг друга не поняли, а так же спросить.
Контекст главный класс, Installs - это метод для вживления пользовательского класса в фраймворк.
MVCSBundle - это класс который указывает, что будет установлено\вживлено несколько классов.
configure - метод для установки связи. Например
Код AS3:

configure(MainConfig, new ContextView(view))

указывает, что класс MainConfig распоряжается ссылкой на отображение.
я понимаю, что написал ерунду, но это лучше чем сказать, а что значит это и это. Если возможно, то поправьте меня.

Добавлено через 23 минуты
Цитата:

Кстати, а что это за конструкция
new MainView( new ContextView(view) )
?
А так эта конструкция означает, что мы создаем экземпляр класса и передаем в конструктор ссылку на отображение. В классе MainView нужно добавить себя в это отображение:
Код AS3:

public function MainView(contextView:ContextView):void
{
    contextView.addChild(this);
}


Akopalipsis 30.07.2013 21:09

Цитата:

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

Akopalipsis 31.07.2013 00:09

Цитата:

Так что не переживайте.
я так не очень умею.
Цитата:

Если вы хотите инициализировать какое-то представление отдельным конфигом, то нужно оборачивать его в ContextView и затем применять метод configure.
Вот что я понимаю из этих слов - если я хочу добавить класс в список отображения, отдельным конфигом, то нужно оборачивать его в ContextView и затем применять метод configure.
Белое я понимаю полностью, красное - нет, а бордовый не совсем.
я не понимаю красное, потому что не понятно - что обёртывать, класс или конфиг класса?
Если имеется ввиду класс - то слово обёртывание для меня звучит неоднозначно. Если я отбрасываю лексикон, то получается, обычное добавление посредством addChild. То есть если брать за эталон Ваш пример, то будет так..:
Код AS3:

private function startup(view:DisplayObjectContainer):void
{               
        view.addChild(new view.MainView() as flash.display.DisplayObject);
        context = new Context()
        .install(MVCSBundle)
        .configure(MainConfig)//главный конфиг
        .configure(MainViewConfig, new ContextView(view));//конфиг отображения                                                               
}

..но мне кажется, что Вы не о том мне говорите. Есть второй вариант ( имеется ввиду у меня, у кого то вариантов гораздо больше ) создавать класс MainView в конфиге, но я уже спрашивал про это и оказалось что это не правильно. А других вариантов у меня пока нет. Есть ещё догадка, что я не до конца понимаю слова:
Цитата:

Метод configure cтавит в соответствие отображению некоторые конфигурационные параметры.
я специально сделал в коде два конфига, чтобы показать, что на сейчас я думаю, что configure это метод для запуска предварительных настроек. Но Ваши слова:
Цитата:

отображению некоторые конфигурационные параметры
так же наводят на мысль, что я ошибаюсь... В общем я пока прекращаю поток вопросов и жду когда у Вас появится время) Спасибо!

TWETTI 31.07.2013 00:23

Цитата:

...Есть второй вариант ( имеется ввиду у меня, у кого то вариантов гораздо больше ) создавать класс MainView в конфиге, но я уже спрашивал про это и оказалось что это не правильно...
Почему не правильно!?

Главное представление я всегда добавляю в AppConfig вот так:
Код AS3:

package {
        импорты...
        public class AppConfig implements IConfig {
                инъекции...
 
                public function configure():void {
                        множество commandMap.map
                        множество injector.map
                        множество mediatorMap.map
 
                        context.afterInitializing(init);
                }
 
                private function init():void {
                        // Добавление главного представления на экран
                        contextView.view.addChild(new MainView());
                }
        }
}

В главном класе написано:
Код AS3:

_context = new Context();
_context.install(MVCSBundle);
_context.configure(AppConfig);
_context.configure(new ContextView(this));


Akopalipsis 31.07.2013 00:48

TWETTI если сказать честно, то я не капельки не расстроен из-за того, что okouser немножечко недоглядел мой глупый вопрос и я несколько день искал того, про что спрашивал в самом начале. Спасибо Вам Всем! Но у меня ещё много вопросов которые я буду потихоньку задавать. Вот такая конструкция это нормально? Что configure несколько? Просто как я сказал выше, пока я не понимаю до конца и не могу разобрать слова описания которые написаны okouser выше, и сейчас мне кажется что это лишь предварительные настройки - это так?
Код AS3:

        context = new Context()
        .install(MVCSBundle)
        .configure(MainConfig)//главный конфиг
        .configure(MainViewConfig, new ContextView(view));//конфиг отображения

Добавлено через 22 минуты
И ещё не понятно до конца, что если написать как у Вас, именно new MainView(), создания экземпляра без сохранения ссылки - это нормально? в RL они как то сохраняются и можно не боятся, что экземпляр как нибудь удалится?
Код AS3:

contextView.view.addChild(new MainView());


TWETTI 31.07.2013 10:09

Пока мы видим MainView на экране он никуда не удалится.

Несколько configure это нормально.

Akopalipsis 31.07.2013 14:24

okouser Скажите, Вы мне такой вариант советовали?
Код AS3:

                private function startup($doc:DisplayObjectContainer):void 
                {
                        var contextView:ContextView = new ContextView($doc);
                        contextView.view.addChild(new MainView);
                        _context = new Context()
                        .install(MVCSBundle)
                        .configure(AppConfig)
                        .configure(ViewConfig ,contextView);
                }


TWETTI 31.07.2013 14:26

okouser, this это ссылка на главный класс приложения Main.as. Именно сюда и будет добавляться MainView.

Akopalipsis 31.07.2013 14:30

я много раз видел что в главном классе Main используют такую конструкцию:
Код AS3:

_context = new Context();
_context.install(MVCSBundle);
_context.configure(AppConfig);
_context.configure(new ContextView(this));

а затем в конфиге пишут:
Код AS3:

contextView.view.addChild(new MainView());

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

TWETTI 31.07.2013 14:43

Не понятно. Что нормально? Вы хотите написать
Код AS3:

[Inject]
public var context:IContext

в других классах?

Akopalipsis 31.07.2013 14:53

Цитата:

Вы хотите написать в других классах?
Да. Вот как у Вас, в Main создан контекст и в AppConfig тоже создан контекст. Вы не подумайте, что я Вас критикую!) просто мне как и всем в самом начале, хочется переспросить.
И вот раз уж начал то и спрошу - когда я расширяю класс, допустим Sprite или получаю ссылку на интерфейс, то в релизе что будет импортировано в код, все публичные свойства и методы или только то что мне нужно?

TWETTI 31.07.2013 15:09

То что Main и AppConfig содержат Context это нормально.
Я делаю так же как и разработчики Rogbotlegs.
Смотри:
https://github.com/darscan/robotlegs...er/demos/hello

Akopalipsis 31.07.2013 15:15

TWETTI Да я и не спорю и не критикую подходы. я уточняю, так как с первого дня изучаю примеры на гитхабе и не всегда встречаю однозначность. Собственно как и с любым кодом. Мне важно было услышать:..Спасибо!
Цитата:

То что Main и AppConfig содержат Context это нормально.


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

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