2009-09-12 4 views
1

Я хочу загрузить компонент MSML из другого компонента MSML в Flex. Чтобы быть более конкретным, у меня есть компонент MSML входа, который загружается из моего основного файла приложения и компонента MSML. Когда пользователь нажимает на какую-либо кнопку из этого компонента входа, он должен перенаправить на компонент «Обзор MSML загрузки» вместо компонента «Вход».Компоненты Flex MSML

ответ

0

Два компонента в приложении. Как 100% ширина/высота. Сделайте одно видимым, а другое невидимым. Повторите по мере необходимости. Это основной принцип вкладок и просмотров.

0

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

0

Использование состояний работает для меня большую часть времени. Но если вы все же хотите сохранить файлы mxml отдельно, по причинам разработки или другим, вы можете загрузить свой другой компонент mxml с помощью PopupManager.

Вы являетесь основным файлом приложения, который может всплывать в окне входа в систему, а затем всплывать в окне обзора, но я не уверен, что это то, что вы действительно хотите.

В любом случае, вот как это сделать:

Первый импорт функция для вашего входа в MXML:

import mx.managers.PopUpManager; 

И когда вам нужно вызвать другой MXML файл:

PopUpManager.createPopUp(this, OverviewMXML, false); 

В модуле OverviewMXML вы можете сообщить об этом, добавив в заголовок следующее:

close="PopUpManager.removePopUp(this)" 

Позвоните, когда пользователь вошел в курс дела.

1

Я хотел бы использовать viewstack

<mx:ViewStack width="100%" height="100%" id="viewstack"> 
    <local:LoginControl/> 
    <local:OverviewControl/> 
</mx:ViewStack> 

Это покажет страницу входа по умолчанию. Установите viewstack.selectedIndex = 1; в обработчик щелчка кнопки, чтобы скрыть контроль входа и отображение обзора.

0

Или вы можете использовать addChild и removeChild для отображения и скрытия компонентов при необходимости. Или даже включить их в приложение как теги MXML и использовать свойство visible, чтобы показать/скрыть их.

0

Если вы на самом деле говорим о MXML как вопрос первоначально заявленной, то я бы рекомендовал следующий подход:

Построить каждый компонент как подкласс Canvas или любой другой компонент, который вы хотите, импортировать эти новые классы для приложения, добавить экземпляр каждого и управлять дисплеем с помощью свойства visible.

Для примера:

MyApp.mxml

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="path.to.the.package.that.contains.your.components.*"> 
    <mx:Script> 
<![CDATA[ 
    public function showOverview():void { 
     login.visible = false; 
     overview.visible = true; 
    } 
    ]]> 
    </mx:Script> 
    <LoginComponent id="login" x="0" y="0" ParentApp="{this}" /> 
    <OverviewComponent id="overview" x="0" y="0" visible="false" /> 
</mx:Application> 

LoginComponent.mxml

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="path.to.the.package.that.contains.your.components.*"> 
    <mx:Script> 
<![CDATA[ 
    private var parentApp:MyApp; 

    [Bindable] 
    public function get ParentApp():MyApp { 
     return parentApp; 
    } 
    public function set ParentApp(val:MyApp):void { 
     parentApp = val; 
    } 

    private function loginBtnClick(et:MouseEvent):void { 
     parentApp.showOverview(); 
    } 
    ]]> 
    </mx:Script> 
    <mxButton id="loginBtn" x="0" y="0" click="loginBtnClick(event)" label="Login..."/> 
</mx:Canvas> 

Надеюсь, это поможет!

Смежные вопросы