Получить ссылку на View в классе ActionScript в приложении ViewNavigatorApplication - PullRequest
0 голосов
/ 28 ноября 2011

У меня очень простой проект во FlashBuilder 4.5.Это мобильное приложение типа ViewNavigatorApplication с одним представлением, MapView.В файле MapView.mxml у меня есть компонент Flex типа Map, объявленный в xml.

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" name="CatBusMapView">

    <fx:Script>
            <![CDATA[
                import com.esri.ags.Map;
                        ....
                    ]]>
    </fx:Script>

    <fx:Declarations>
     ....
    </fx:Declarations>

    <esri:Map id="cbm">
        ...
    </esri:Map>
</s:View>

В этом же проекте у меня есть класс actionscript, который называется UserGeolocation.В этом классе я пытаюсь получить ссылку на этот компонент карты.

Пока что я могу получить ссылку на приложение верхнего уровня, его ViewNavigator и NavigationStack указанного ViewNavigator.Однако я не могу найти способ получить доступ к MapView, тем более, к карте, которую я объявил в ней.

Мне известны такие методы, как firstView () и activeView (), но я хочу абсолютное решениетот, который извлекает представление независимо от того, является ли оно первым или активным.Я попробовал navigator.getChildByName ("MapView") без удачи.

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Просто чтобы подчеркнуть изначальное намерение вопроса: я хочу абсолютную ссылку на View в ViewNavigatorApplication. Я удивлен, что в API нет четкого способа сделать это, так как кажется обычной практикой помещать компоненты Flex в представления в форме декларативного MXML. Существующие методы, которые управляют стеком, не помогают в этом отношении, потому что они либо а) зависят от активного или первого представления, либо б) влияют на визуальное представление приложения.

Было предложено три основных решения, которые, как ни странно, фокусируются на проблемах, порожденных несколькими стеками в TabbedViewNavigatorApplication, и не упоминают ViewNavigatorApplication.

Я выбрал первый.

1 голос
/ 30 ноября 2011

Вы также можете сделать это, используя события.Запустите пользовательское событие из MapView onActivate / creationComplete и передайте компонент esri map cbm в качестве части данных события.

Иметь прослушиватель в основном классе ViewNavigatorApplication, который прослушивает это событие.В обработчике прослушивателя событий вы можете получить к нему доступ через event.data, а затем назначить его переменной, объявленной в основном классе или в классе UserGeolocation.

Брайан

...