2012-08-08 89 views
0

我正在用基本的Flash UI組件構建一個簡單的菜單,使用純ActionScript 3.0,並且在電影測試(Ctrl+Enter)期間不會顯示第一個Label控件。這是爲什麼?Label is not up up

我在圖書館或舞臺上沒有任何符號。我的文檔鏈接到main.as

瑞士法郎啓動main()得到指令生成mainMenu這反過來將在電影的中心頂部顯示的唯一標籤應該怎樣發生的屏幕。

main.as

package { 

    import flash.display.*; 

    public class main extends MovieClip{ 
     public function main(){ 
      changeState(null, "mainMenu"); 
     } 
     public function changeState(currentState, nextState){ 
      if(currentState != null){ 
       removeChild(currentState); 
      } 
      if(nextState == "mainMenu"){ 
       var main_menu:mainMenu = new mainMenu(changeState); 
       addChild(main_menu); 
      }// else if(nextState == "deckManager"){ 
//    var deck_manager:deckManager = new deckManager(changeState); 
//    addChild(deck_manager); 
//   } 
     } 
    } 
} 

mainMenu.as

package { 

    import flash.display.*; 
    import flash.events.MouseEvent; 
    import fl.controls.Label; 
    import fl.controls.RadioButton; 
    import fl.controls.ComboBox; 
    import fl.controls.Button; 

    public class mainMenu extends Sprite{ 

     const difficultyRadioGroupName:String = "difficultyGroup"; // group name for easy, normal and hard difficulty radio buttons 

     var difficultyLabel:Label; // "Difficulty" label 
     var easyDifficultyRadio:RadioButton; // "Easy" difficulty radio button 
     var normalDifficultyRadio:RadioButton; // "Normal" difficulty radio button 
     var hardDifficultyRadio:RadioButton; // "Hard" difficulty radio button 
     var yourDeckLabel:Label; // "Your deck" label 
     var yourDeckCombo:ComboBox; // combobox to select your deck(1) 
     var editSelectedDeckButton:Button; // button to edit currently selected deck 
     var startTheGameButton:Button; // button to start the game 
     var theCallbackFunction:Function; // callback function to change between mainMenu and deckManager 

     public function mainMenu(callback){ 

      // create and position the difficulty label 
      difficultyLabel = new Label(); 
      difficultyLabel.text = "Difficulty"; 
      difficultyLabel.x = width/2; 
      difficultyLabel.y = height/4; 
      addChild(difficultyLabel); 

      theCallbackFunction = callback; 
     } 


     //public function backButtonClicked(evt:MouseEvent){ 
//   theCallbackFunction(this, "back"); 
//   return; 
//  } 
    } 
} 

回答

0

我相信'fl.controls'包中的所有內容都需要庫中相應的資源才能顯示出來。如果您只是從fl.controls中導入東西,則除非將該元素添加到庫中,或者在其中包含相應庫資源的情況下采集swc/swf,否則不會向控件提供UI方面的信息。

所以我猜如果在閃存IDE中,如果你從組件選項卡拖動適當的UI元素到你的庫,他們會開始顯示。他們不必在舞臺上或任何其他地方,只需在圖書館中使UI元素與您的代碼一起編譯即可。

+0

有趣! Flash IDE(Flash CS5/6或其他)與我的老朋友Flash Builder是不同的動物:) – 2012-08-08 17:14:09

1

在此似乎確定的表面。

但是,您分配給Label的X/Y座標可能不是您所期望的。您可以根據mainMenu雪碧的寬度/高度來設置它們。但那Sprite還沒有孩子(孩子被添加在下一行),所以寬度/高度仍然是0.

這可能不是問題。爲了進一步解決問題,我會設置一些斷點並使用調試器,或者添加一堆trace語句以確保您的代碼正在使用正確的值執行。