标签没有显示出来

时间:2012-08-08 15:23:19

标签: actionscript-3 flash actionscript

我正在使用基本的ActionScript 3.0从基本的Flash UI组件构建一个简单的菜单,并且在电影测试Label期间,第一个(Ctrl+Enter)控件没有出现。那是为什么?

我在图书馆或舞台上没有任何符号。我的文档链接到 main.as

当启动 .swf 时,会发生什么?main()获取生成mainMenu的指令,而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); // } } } } 反过来将显示中间顶部的唯一标签。电影画面。

main.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;
//      }
    }
}

mainMenu.as

{{1}}

2 个答案:

答案 0 :(得分:1)

从表面上看,这似乎没问题。

但是,您分配给Label的X / Y坐标可能不是您所期望的。您可以根据mainMenu精灵的宽度/高度来设置它们。但是Sprite还没有孩子(孩子被添加到下一行),所以宽度/高度仍然是0。

这可能不是问题。为了进一步解决这个问题,我会设置一些断点并使用调试器,或者添加一堆trace语句以确保使用正确的值执行代码。

答案 1 :(得分:0)

我相信'fl.controls'包中的所有内容都需要显示库中的相应资源。如果您只是从fl.controls导入内容,则除了将该元素添加到库中或使用其中的相应库资源摄取swc / swf之外,您不会获得控件的UI方面。

所以我想如果在Flash IDE中,如果将相应的UI元素从组件选项卡拖到库中,它们就会开始显示。它们不必在舞台上或任何东西上,只需在库中,因此UI元素将使用您的代码进行编译。