2013-07-07 36 views
0

我有點難住。我認爲只需通過引用函數(「display_album()」,如下面的代碼)就可以在fx:Script標記中調用一個函數。在花括號之外調用該函數是有意義的,但是當我這樣做時,FlashBuilder中的調試器會給我提供1180錯誤,並調用一個可能未定義的方法。調用函數<fx:Script>標籤

我可以通過單擊按鈕來調用該函數(這也是有意義的),並且我在FlashBuilder調試器中獲得適當的跟蹤。

但我很好奇,如何在不添加按鈕的情況下調用標籤中的功能。謝謝!

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 

    <fx:Script> 
     <![CDATA[ 

      public function display_album():void 
      { 
       var album:String = "The White Album"; 
       trace (album); 

      } 

      display_album(); 

     ]]> 
    </fx:Script> 
    <s:Button x="192" y="259" label="Button" click = "display_album()"/> 

</s:Application> 

回答

0
<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" 
      initialize="init()"> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 
</fx:Declarations> 

<fx:Script> 
    <![CDATA[ 
     private function init():void 
     { 
      display_album(); 
     } 

     public function display_album():void 
     { 
      var album:String = "The White Album"; 
      trace (album); 

     } 

    ]]> 
</fx:Script> 
<s:Button x="192" y="259" label="Button" click = "display_album()"/> 

我希望這有助於。

+0

嗨馬克,謝謝 - 我有同樣的想法,並嘗試過你的方法,但它仍然無效:(我應該看到跟蹤運行,只要我點擊調試,沒有點擊按鈕 - 但沒有運氣。謝謝! – tomish

+0

Pranav和Mark,謝謝,這個工作 - 我的錯誤,我忘了在應用程序的頂部添加initialize = init()代碼! – tomish

0

您不能調用這樣的實例函數,因爲它在構造函數被調用之前運行。由於實例本身還沒有被初始化,所以沒有範圍內可以執行該函數。您只能在調用構造函數之前調用類函數。

您可以通過static關鍵字(可能不是正確的方法)將方法轉換爲類方法,也可以在creationComplete事件中觸發此方法。