viewstack导致错误1065变量未定义问题?

时间:2010-04-09 20:09:01

标签: flex flash flex3 adobe

我有一个flex应用程序,我有一个左侧TREE控件和右侧的视图堆栈,当有人选择树时,它会根据树的XML的隐藏节点值加载命名的视图堆栈。 但它正在抛出一个错误1065变量,该变量未在viewstack上定义,该变量在最后一次浏览器刷新/重新加载时起作用。它与特定的视图堆栈无关,我可以告诉它似乎只是在某些渲染事件上抛出错误。 我试图在viewstack上使用creationpolicy =“all”,但似乎没有任何帮助。

public function treeChanged(event:Event):void {

            selectedNode=Tree(event.target).selectedItem as XML;
            //trace(selectedNode.@hidden);
            //Alert.show(selectedNode.@hidden.toString() + " *");

            if(selectedNode.@hidden.toString() == '' || selectedNode.@hidden.toString() == null){
                //Alert.show("NULL !");
                return;
            }


            mainviewstack.selectedChild = Container(mainviewstack.getChildByName(selectedNode.@hidden.toString())); //Container(mainviewstack.getChildByName(selectedNode.@hidden));

如果我在getchildbyname选项之前添加一个警告框,则视图堆栈有时间渲染并且一切正常,所以它让我相信应用程序没有给它足够的时间加载视图堆栈?

1 个答案:

答案 0 :(得分:0)

错误究竟发生在哪里?你有堆栈跟踪吗?您在哪里注册事件监听器treeChanged()

您可能会尝试在FlexEvent.CREATION_COMPLETE的事件侦听器中添加事件侦听器。到那时,所有组件都应该已初始化。

添加事件监听器的方式对我来说是正确的,但我不确定时间。所以这是为CREATION_COMPLETE添加事件监听器的示例(假设画布是您的包含元素):

<mx:Canvas creationComplete="onCreationComplete">
    <mx:Script><![CDATA[
            private function onCreationComplete():void {
                tree.addEventListener(TreeEvent.Change, treeChange)
            }
        ]]>
    </mx:Script>
    <mx:Tree id="tree" ... />
</mx:Canvas>

请注意,我没有测试过这个,我只是在旅途中写下来。有些名字可能是错的,但它应该给你正确的想法。