2012-08-08 90 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语句以确保您的代码正在使用正确的值执行。