从主flex应用程序调用mxml组件中的函数

时间:2010-12-20 15:18:36

标签: actionscript flex4

在我的主应用程序中,我有一个包含3个子视图的视图堆栈。在视图堆栈更改处理程序中,我以编程方式更改selectedchild属性。

我知道每次更改selectedChild属性时都不会调用视图的initialize方法。所以我也尝试以编程方式调用init方法..

view1.mxml

    <fx:Script>
    <![CDATA[
    public function init():void{
     //something        
    }
    ]]>
    </fx:Script>

main.mxml

viewStack.selectedChild = viewStack.getChildByName("viewname") as NavigatorContent;
var v1:view1 = new view1();
v1.init();

但是我得到一个空指针错误。我错过了什么吗? 任何帮助,将不胜感激。我是初学者。

2 个答案:

答案 0 :(得分:0)

在main.mxml应用程序中,您正在创建view1组件的新实例,您需要的是执行viewstack的当前实例的init()方法。

你为什么不尝试这样做:

  

var view:View1 = viewStack.getChildByName(“viewname”)。getChildByName(“yourComponentId”)为View1;

     

view.init();

其中yourComponentId是Viewstack中navigatorContent内的组件。

无论如何你不应该这样做,至少不是这样。

问候!

加布里埃尔.-

答案 1 :(得分:0)

我用过

FlexGlobals.topLevelApplication.[viewId].init();

它有效!!