Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Архитектура Flex-приложения (http://www.flasher.ru/forum/showthread.php?t=151337)

Johny_86 26.02.2011 16:39

Архитектура Flex-приложения
 
Помогите, пожалуйста разобраться. Написал видеочат на AS3.0, серверная часть на SSAS. В нём несколько экранов. Всё организовано так: есть главный класс VideoChat. Есть классы Menu, Room, FMS. Сперва пользователь вводит имя, а потом решает создать ли ему комнату или прицепиться к кому-нибудь. Т.е. получается, что есть несколько экранов. Весь контроль идет в главном классе. Например, получив из Меню событие, какую кнопку нажали, VideoChat используя public методы Room, создает комнату и т.п. В СS4 у классов Room, Menu есть свой клип. Т.е. когда мне нужна комната, то я в видеочате создаю экземпляр и добавляю на сцену. Мне нужно переделать все во флекс. Я так понимаю, что есть главный mxml-файл. (он будет выполнять функции VideoChat, например создавать Room?). Когда я создаю Room, как мне добавить его в приложение (на сцену). Нужно ли мне для него писать room.mxml, или как будет управляться логика? Кто будет слушать диспатчки этого Room и говорить остальным, что им делать? Опишите пожалуйста архитектуру этого всего.
Кто управляет кем, кто слушает диспатчи. Как создавать и добавлять на сцену экземпляры, например Room, для него написан класс Room.as в отдельном файле. Как ему сделать "оболочку" на mxml и объеденить с Room.as (в CS4 это linkage).

wvxvw 27.02.2011 11:06

mxml файл это шаблон класса со всеми вытекающими. Т.е.
файл DocumentClass.mxml
Код AS3:

<fl:Sprite xmlns:fl="flash.display.*" xmlns:fx="http://ns.adobe.com/mxml/2009">
<fx:Script>
<![CDATA[
public function foo():void { trace("bar"); }
]]>
</fx:Script>
</fl:Sprite>

и
Код AS3:

package
{
    import flash.display.Sprite;
 
    public class DocumentClass extends Sprite
    {
        public function DocumentClass() { super(); }
 
        public function foo():void { trace("bar"); }
    }
}

равнозначны.

Johny_86 27.02.2011 12:05

Получается у меня весь код из *.as файлов будет внутри тегов script? Я хочу отделить графику от кода: в двух словах. Во флэш в библиотеке лежат символы(MovieClip, Button, Graphic...). К примеру символ Room-movieClip. (у него есть кнопочки, строка ввода, отображение камеры). К нему прилинкован класс Room. Код и графика разделены. В коде я забираю все, что находится на сцене: getChildByName();Когда мне надо в главном классе отобразить Room, то я всего лишь делаю экземпляр класса и добавляю на сцену. А во флексе ведь нету "графики" с символами. Есть только mxml и as - файлы. У каждого класса as должен быть свой mxml, который отвечает за графику? И как его потом в общее приложение добавлять? Как связать *.mxml, отвечающий за графику с *.as, который отвечает за работу графических элементов?

alatar 27.02.2011 19:10

Цитата:

У каждого класса as должен быть свой mxml, который отвечает за графику?
Нет, можно вообще все на чистом as написать.
Цитата:

Как связать *.mxml, отвечающий за графику с *.as, который отвечает за работу графических элементов?
Можете воспользоваться code behind.
http://www.flasher.ru/forum/showthread.php?t=146440
Если пишете под Flex 4, то пишете ваш компонент в as, потом создаете ему скин на mxml.
Можете воспользоваться MVC фреймворками, например, robotlegs, pureMVC в них во вьюхе используются медиаторы. В медиаторе можно полностью реализовать реакцию компонента, а в mxml только "сверстать" его.


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

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