我正在使用基本的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}}
答案 0 :(得分:1)
从表面上看,这似乎没问题。
但是,您分配给Label
的X / Y坐标可能不是您所期望的。您可以根据mainMenu
精灵的宽度/高度来设置它们。但是Sprite
还没有孩子(孩子被添加到下一行),所以宽度/高度仍然是0。
这可能不是问题。为了进一步解决这个问题,我会设置一些断点并使用调试器,或者添加一堆trace
语句以确保使用正确的值执行代码。
答案 1 :(得分:0)
我相信'fl.controls'包中的所有内容都需要显示库中的相应资源。如果您只是从fl.controls导入内容,则除了将该元素添加到库中或使用其中的相应库资源摄取swc / swf之外,您不会获得控件的UI方面。
所以我想如果在Flash IDE中,如果将相应的UI元素从组件选项卡拖到库中,它们就会开始显示。它们不必在舞台上或任何东西上,只需在库中,因此UI元素将使用您的代码进行编译。