Во-первых, вы не должны этого делать, подробнее об этом через минуту ...
Если вы должны это сделать (скажем, по какой-то деловой причине)
Вы должны иметь доступ к приложению верхнего уровня, как это ...
<fx:Declarations>
<fx:Component className="MyNativeWindow">
<s:Window>
<s:BorderContainer width="100%" height="100%">
<s:backgroundFill>
<s:LinearGradient>
<s:GradientEntry color="0x555555"/>
<s:GradientEntry color="0x777777"/>
</s:LinearGradient>
</s:backgroundFill>
<mx:Button y="263" x="420" label="close" click="(FlexGlobals.topLevelApplication as MyApplicationType).runFunction();this.close()"/>
</s:BorderContainer>
</s:Window>
</fx:Component>
</fx:Declarations>
Замена MyApplicationType
типом вашего приложения.
Теперь, к моему, , не делайте этого примечания выше. Ваш компонент не должен вызывать зависимые функции таким образом, вместо этого вы должны обрабатывать это событие кнопки click
, используя функцию-обработчик, которая затем запускает событие уровня компонента, которое обрабатывается на каждом уровне вверх по дереву компонента, вплоть до Приложение, если это где это событие должно быть обработано.
Однако простое указание сделать это, не зная остальной структуры вашего приложения, не сильно поможет, скорее всего, вам нужно будет создать беспорядок, прежде чем вы поймете, почему его нужно убирать.
Но в качестве полезного совета всегда старайтесь модульно модифицировать свое приложение, разделяя функциональные обязанности на соответствующие классы.