2013-07-07 1 views
0

Я немного в тупике. Я думал, что можно вызвать функцию в теге fx: Script просто путем ссылки на функцию («display_album()», как в приведенном ниже коде). Было бы разумно, чтобы вызов этой функции был за пределами фигурных скобок, но когда я это делаю, отладчик в 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

Привет, спасибо. Я тоже подумал и попробовал ваш подход раньше, но он по-прежнему не работает :(Я должен увидеть, как трассировка запускается, как только я нажимаю debug, не нажимая кнопку, но не повезло. Спасибо! – tomish

+0

Pranav и Mark, спасибо, это действительно работает - моя ошибка, я забыл добавить код initialize = init() в верхней части приложения! – tomish

0

Вы не можете вызвать такую ​​функцию экземпляра, потому что она запускается до вызова конструктора. Поскольку сам экземпляр еще не был инициализирован, в этой функции не может быть области видимости. Вызывать функции класса можно только до вызова конструктора.

Вы можете преобразовать метод в метод класса с помощью ключевого слова static (возможно, в данном случае это не так) или вызвать этот метод в событии creationComplete.