2010-04-09 73 views
0

我有一個flex應用程序,我有一個左側的TREE控件和一個viewstack在右邊,當有人選擇樹時,它會根據樹的XML的隱藏節點值加載命名的viewstack。 但它拋出一個錯誤1065變量沒有定義在最後一次瀏覽器刷新/重新加載的視圖堆棧上。這與我可以告訴它的一個特定的viewstack無關,似乎只是在某些渲染事件上拋出錯誤。 我試圖在viewstack上使用creationpolicy =「all」,但它似乎沒有任何幫助。viewstack導致錯誤1065變量未定義的問題?

public function treeChanged(event:Event):void { 

      selectedNode=Tree(event.target).selectedItem as XML; 
      //trace([email protected]); 
      //Alert.show([email protected]() + " *"); 

      if([email protected]() == '' || [email protected]() == null){ 
       //Alert.show("NULL !"); 
       return; 
      } 


      mainviewstack.selectedChild = Container(mainviewstack.getChildByName([email protected]())); //Container(mainviewstack.getChildByName([email protected])); 

如果我在一個警告框添加getchildbyname選項則ViewStack有時間來渲染,一切工作正常之前,所以這使我相信應用程序沒有給它足夠的時間來加載則ViewStack?

回答

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> 

請不,我沒有測試過這一點,我只是寫下來在旅途中。有些名字可能是錯的,但它應該給你正確的想法。

+0

錯誤發生在線 mainviewstack.selectedChild =容器(mainviewstack.getChildByName(selectedNode。@ hidden.toString())); //Container(mainviewstack.getChildByName([email protected])); 我寄存器樹變化這裏 的 你能給我一個關於如何使用FlexEvent.creation完成的例子嗎? – Jason 2010-04-12 12:57:56

+0

我也使用flex sdk 3.0我應該升級它嗎? – Jason 2010-04-12 13:01:35

+0

ReferenceError:錯誤#1065:變量未定義。 \t at global/flash.utils :: getDefinitionByName() \t at mx.utils :: DescribeTypeCache $/describeType()[C:\ autobuild \ 3.4.0 \ frameworks \ projects \ framework \ src \ mx \ utils \ DescribeTypeCache .as:95] \t at mx.utils :: ObjectUtil $/getClassInfo()[C:\ autobuild \ 3.4.0 \ frameworks \ projects \ framework \ src \ mx \ utils \ ObjectUtil.as:838] \t at mx.controls :: DataGrid/generateCols()[C:\ autobuild \ 3.4.0 – Jason 2010-04-12 13:17:32