Вы переместили свой AtionScript во включаемый файл?Или новый класс?Как этот новый файл включен в файл приложения MXML?Я подозреваю, что ваша проблема является предметом рассмотрения.Я собираюсь продолжить писать в предположении, что вы создали новый класс.Итак, у вас есть что-то вроде этого:
Основное приложение| - Класс с функцией ChangeView| - ViewStack
в такой архитектуре;Основное приложение может вызывать методы или устанавливать свойства в классе changeView или в ViewStack.Класс changeView или ViewStack может «общаться» с основным приложением, отправляя событие.Однако класс changeView никак не может взаимодействовать с ViewStack;и ViewStack не может общаться с классом changeView.
Причина, по которой в этой архитектуре класс changeView получает ошибку "неопределенное свойство", заключается в том, что в классе changeView нет переменной с именем myViewStack.Он ничего не знает ни о переменных экземпляра / потомках своего родителя, ни о его дочерних элементах.
У вас есть несколько опций:
Пусть класс changeView отправляет событие, которое основное приложение будет слушать, изатем измените selectedIndex на ViewStack.Это звучит излишне;и почти полностью игнорирует цель «инкапсуляции» этой функциональности.
Вы можете передать переменную viewStack в класс changeView либо в качестве аргумента, либо установить ее как переменную экземпляра и изменить ее таким образом.,Вот так:
protected function changeView(index:int, myViewStack:ViewStack):void
{
myViewStack.selectedIndex = index;
}
Это бы сработало, хотя я не уверен, что это то, что вы имели в виду.