我想创建一个Hangman游戏,而不是让玩家输入一个字母,我想在屏幕上有26个可点击的按钮。现在,我可以创建26个符号,但是当我创建一个letter_button.as类并且只创建26个letter_button实例时,这似乎很荒谬,我可以在其中执行类似letter_button.letter_id的操作来获取值。
这部分很容易。困难的部分是,呃。好。 1-如何创建接受动态文本的按钮?
2-如何将这些按钮添加到舞台? parent.addChild(new letter_button(letter))会工作吗?或者我还需要其他东西吗?
在这里,我已经在我的解决方案中走了多远,告诉我我是不是在咆哮错误的树。首先,我创建了一个名为" Letter_Button"的按钮。它上面有一个文本字段,名为" letter_text"。它是一个MovieClip,它链接到Letter_Button.as
这是一个零碎的,半生不熟的测试代码:
package {
import flash.display.MovieClip;
public class hangman_manager extends MovieClip{
public function hangman_manager()
{
addChild(new Letter_Button("a"));
}
}
}
和Letter_Button.as:
package {
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.Event;
public class Letter_Button extends SimpleButton {
public function Letter_Button(letter:String) {
x = 250 ;
y = 250 ;
trace ("Letter is"+ letter);
addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
}
public function onAddedToStage(event:Event):void
{
this.letter_text.text="A";
}
}
}
问题是这个 - 我一直得到一个空对象错误,我GUESS因为letter_button还没有存在。我曾希望onAddedToStage可以解决这个问题,但事实并非如此。我怎么会在这里出错?我是否发明了一种荒谬的方式来做到这一点?还有更好的方法吗?
答案 0 :(得分:0)
as3中已经有一个LabelButton类。查看参考here
答案 1 :(得分:0)
我以前做过的一种方法是创建一个带有按钮图形的bg图层的动画片段,以及一个带有实例名称为“buttonText”的动态文本域的第二层。
然后我将库中的movieclip连接到一个名为“MyButton”的新类。 MyButton的构造函数需要一个字符串。构造函数调用一个名为setText(txt:String)的方法,该方法执行:
this['buttonText'].text = txt;
您还可以将MouseEvent侦听器添加到每个按钮以调用returnButtonValue方法,该方法将返回保存该按钮的txt的变量。
要添加它们,只需执行以下操作:
button1 = new MyButton("desired text value");
addChild(btn1);