在AS3中使用动态文本创建多个按钮

时间:2011-06-22 09:48:18

标签: flash actionscript-3

我想创建一个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可以解决这个问题,但事实并非如此。我怎么会在这里出错?我是否发明了一种荒谬的方式来做到这一点?还有更好的方法吗?

2 个答案:

答案 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);