0

ベアActionScript3.0を使用して基本的なFlashUIコンポーネントからシンプルなメニューを作成してLabelいますが、ムービーのテスト中に最初のコントロールが表示されません(Ctrl+Enter)。何故ですか?

図書館にもステージにもシンボルはありません。私のドキュメントはmain.asにリンクされています

.swfが起動されると、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;
//      }
    }
}
4

2 に答える 2

1

表面的にはこれは問題ないようです。

ただし、割り当てているX / Y座標は、Label期待したものではない可能性があります。mainMenuスプライトの幅/高さに基づいて設定します。ただし、Spriteまだ子がないため(子は次の行に追加されます)、幅/高さは0のままです。

これは問題ではないかもしれません。これをさらにトラブルシューティングするには、いくつかのブレークポイントを設定してデバッガーを使用するか、一連のtraceステートメントを追加して、コードが適切な値を使用して実行されていることを確認します。

于 2012-08-08T16:54:40.477 に答える
0

'fl.controls'パッケージのすべてが表示されるには、ライブラリ内の適切なアセットが必要だと思います。fl.controlsから物事をインポートするだけの場合、その要素をライブラリに追加するか、適切なライブラリアセットを含むswc / swfを取り込むまで、コントロールにUIアスペクトはありません。

したがって、フラッシュIDEで、適切なUI要素を[コンポーネント]タブからライブラリにドラッグすると、それらが表示され始めると思います。UI要素がコードでコンパイルされるように、ライブラリ内だけでステージ上にある必要はありません。

于 2012-08-08T17:10:15.677 に答える