2011-03-15 44 views
0

我有項目列表的程序。一個項目是一個擴展View的actionScript類。當我點擊列表時,它會推動視圖。在這個類的構造函數中,我添加了一些按鈕,並且我有一個添加另一個按鈕的函數。 我的問題是視圖只顯示在構造函數中創建的按鈕,而不是在函數中創建的按鈕。到移動應用程序的視圖中添加元素在ActionScript

package 
{ 

    import spark.components.Button; 

    public class Application extends View 
    {  
     public function Application() 
     { 
      var bt:Button = new Button(); 
      bt.label = "In C"; 
      addElement(bt); 
     } 

     public function addButton():void {   
      var b:Button = new Button(); 
      b.label = "Olé"; 
      addElement(b); 
      visible = true;   
     }  
    } 
} 

的的firstView

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="Home" 
    visible="false" creationComplete="retrieveApplication(event)"> 
<fx:Script> 
    <![CDATA[ 
     import ... 

     protected function retrieveApplication(event:FlexEvent):void 
     { 
      ... 
      var application:Application = new Application(); 
      ...      
      application.addButton(); 
      this.visible = true; 
     } 

     protected function launchApplication(event:IndexChangeEvent):void 
     { 
      navigator.pushView(Application); 
     } 

    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 
<s:Button x="10" y="10" width="460" label="Button" click="launchApplication(event)"/> 

那我做錯?

+0

你得到任何錯誤?還是隻是沒有出現?我不知道特殊字符「e」是否會導致問題 - 但可能。 – Bosworth99 2011-03-15 15:24:56

回答

0

請注意,您將類引用傳遞給pushView,而不是實例。這意味着您不會傳遞您在retrieveApplication方法中創建的應用程序實例。

在調用pushView之後,Flex實例本身就是視圖的一個實例。所以addButton方法永遠不會被調用。

+0

在調用pushView之後,Flex實例本身就是視圖的一個實例... 如何顯示我創建的視圖和actionScript類? 我創建了一個類,創建一個視圖,解析一個XML文件,告訴要放置什麼樣的視覺元素,創建它們並添加到視圖中。 我想展示它,所以我該怎麼做? – AndroidSearch 2011-03-17 15:18:09

+0

我認爲View類中有一個viewAdded事件。不要創建AS類,創建MXML視圖組件並在viewAdded上添加偵聽器。在您的監聽器中,解析您的XML並創建視覺元素。 – 2011-03-17 16:56:50

相關問題