Как уже упоминалось в вашем комментарии, проблема заключается в области видимости переменной.Есть много способов сделать то, что вам нужно, но, по сути, вам нужно место, где вы можете ссылаться как на свой стек представлений, так и на свой элемент управления представлением в одной и той же области видимости (иначе из другого класса).Существуют целые фреймворки, созданные просто для того, чтобы предоставить способ получить эти ссылки там, где они вам нужны, но в вашем случае это довольно просто, поскольку родительский компонент уже ссылается на них обоих.
В вашем компоненте представления создайтелокальная (общедоступная и привязываемая) переменная для хранения текущего индекса на основе нажатия кнопки ...
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Script>
<![CDATA[
[Bindable]
public var selectedIndex:int;
protected function changeView(index:int):void
{
this.selectedIndex = index;
}
]]>
</fx:Script>
<s:Button id="myButton" click="changeView(1);"/>
Затем в родительском компоненте вы можете привязать непосредственно к selectedIndex компонента представления ...
<comps:viewControl id="myControl"/>
<mx:ViewStack id="lgViewStack" selectedIndex="{myControl.selectedIndex}">
</mx:ViewStack>
Еще один способ сделать это - отправить событие в ваш viewControl при каждом изменении индекса.Затем вы можете сделать что-то подобное, используя обработчик событий в родительском компоненте ...
protected myControl_changeHandler(event:Event):void
{
this.mainIndex = myControl.selectedIndex;
}
Таким образом, вы можете убедиться, что ваш родительский компонент также имеет актуальную ссылку на индекс..