справочное управление статической функцией Adobe Flex - PullRequest
1 голос
/ 29 февраля 2012

Можно ли ссылаться на элемент управления в приложении из статической функции?

У меня есть Viewstack, содержащий VBox, хранящиеся в отдельных элементах управления. Пример:

<mx:ViewStack id="content" width="100%" height="100%" resizeToContent="true">
    <controls:Login/>
    <controls:Dash/>            
    <controls:Input/>   
    <controls:Review/>
    <controls:Search/>  
</mx:ViewStack>     

Как только я войду в свой элемент управления входом в систему, я хочу изменить выбранный индекс моего ViewStack. Из внешнего управления я не могу ссылаться на свой ViewStack по имени Я могу ссылаться на общедоступную статическую функцию из внешнего элемента управления, однако я не могу ссылаться на ViewStack изнутри этой функции. Любая помощь с благодарностью.

JH

Ответы [ 3 ]

0 голосов
/ 29 февраля 2012

Можно ли ссылаться на элемент управления в приложении из статической функции?

Обычно нет.Статическая функция (или свойство) существует в самом классе.Принимая во внимание, что дочерние элементы MXML, такие как в стеке представлений, существуют в конкретном экземпляре класса.Функция уровня класса ничего не будет знать о каких-либо конкретных экземплярах класса и не сможет получить доступ к свойствам конкретного экземпляра.

Однако вы можете передать экземпляр класса в статическую функцию и таким образом получить доступ к свойствам.как то так:

public static function doStuff(myViewStack:ViewStack):void{
 trace(myViewStack.id)
 // do other stuff
}

И назовите это так:

MyClass.doStuff(content)
0 голосов
/ 29 февраля 2012

Обычно вы можете иметь одноэлементный класс, где вы можете сохранить Экземпляр основного приложения, и если вы просматриваете стек, находится внутри вашего основного приложения вы можете сделать что-то вроде этого

public static function changeIndex(index:int):void
{
    FlexGlobals.topLevelApplication.content.selectedIndex = index;
    //urappinstance.content.selectedIndex = index;
}
0 голосов
/ 29 февраля 2012

Вы можете достичь этого, начиная с FlexGlobals.topLevelApplication (если он виден оттуда). Хотя дизайн такой вещи может быть сомнительным.

...