闪光简单按钮与文本

时间:2011-04-30 19:10:59

标签: flash actionscript-3

我在Flash cs5中有一个简单的按钮 - as3,名为btn1,里面有一个名为text_txt的动态文本。

目标只是改变文字......

btn1.visible=true; // works fine
this.btn1.text_txt.text="hello"; // give a NULL error

我的问题是:如何以编程方式更改该按钮内的文字?

4 个答案:

答案 0 :(得分:3)

因为我有FlashDevelop,所以我只能告诉你如何以编程方式完成所有工作。

如果您处理Sprite对象(我推荐),那么以下是您访问TextField对象中Sprite的方式:

var textField:TextField = new TextField();
textField.name = "textField";
textField.mouseEnabled = false;

var rectangleShape:Shape = new Shape();
rectangleShape.graphics.beginFill(0xFF0000);
rectangleShape.graphics.drawRect(0, 0, 100, 25);
rectangleShape.graphics.endFill();

var buttonSprite:Sprite = new Sprite();
buttonSprite.addChild(rectangleShape);
buttonSprite.addChild(textField);
addChild(buttonSprite);

var tf:TextField = TextField(buttonSprite.getChildByName("textField"));
tf.text = "button sprite text";

首先实例化名为TextField的{​​{1}}对象,并为其textField属性分配字符串“textField”,这与设置其实例名称相同。

接下来,实例化一个名为name的{​​{1}}对象,该对象以图形方式配置为看起来像一个简单的红色矩形。

接下来,实例化名为Shape的{​​{1}}显示对象对象,并向其添加rectangleShapeSprite个显示对象。然后将buttonSprite显示对象容器添加到舞台中。

最后调用textField显示对象容器的rectangleShape方法并返回Sprite显示对象。为此,必须将buttonSprite显示对象的name属性作为getChildByName()方法的参数给出。接下来,返回的textField对象存储在名为textField的本地getChildByName()对象中,现在可以访问textField

<强> [UPDATE]

以下是通过TextField对象访问tf对象的方法,类似于通过textField对象访问它(我不建议这样做):

TextField

答案 1 :(得分:2)

需要使用基本类MovieClip btn1需要3帧和text_txt - textField

btn1.text_txt.text="blablabla"; // if MovieClip!!!

您拥有的按钮属性

btn1.buttonMode = true;
btn1.addEventListener(MouseEvent.MOUSE_OVER, overListener);
btn1.addEventListener(MouseEvent.MOUSE_OUT, outListener);
btn1.addEventListener(MouseEvent.CLICK, clickListener);

function overListener(e:MouseEvent):void{
 e.currentTarget.gotoAndStop(1)
}
function outListener(e:MouseEvent):void{
 e.currentTarget.gotoAndStop(2)
}
function clickListener(e:MouseEvent):void{
 e.currentTarget.gotoAndStop(3)
}

或者您可以创建上述内容的MyBtnClass(_text:String,_MovieClip:MovieClip)。 对不起我的英文

答案 2 :(得分:0)

有一种简单的方法可以访问SimpleButton的子项:

例如,在我的SimpleButton(名为_myButton)的up状态中,我有一个标签(它的实例名称无关紧要)和一个Sprite(在0层):

var _container:DisplayObjectContainer = DisplayObjectContainer(_myButton.upState);
var _spt:Sprite = Sprite(_container.getChildAt(0));
var _lbl:Label = Label(_container.getChildAt(1));

<强>注释:
- 您可以访问不同的按钮状态:upState,downState,hitTestState,overState;
- 您可以转换为DisplayObjectContainer以获取子项;
- 您不能使用(至少直接)getChildByName,因为实例名称将动态生成。

答案 3 :(得分:0)

将此类添加到按钮中:

usage example:
var my_btn_01 : SimpleButtonTf; //add you button instance name here 
write > my_btn_01.text = "ABC"
read  > trace(my_btn_01.text)  //output "ABC"    

package classes {
    import flash.display.Sprite;
    import flash.display.SimpleButton;
    import flash.display.DisplayObjectContainer;

    public class SimpleButtonTf extends SimpleButton {
        private var lbl_up:TextField;
        private var lbl_down:TextField;
        private var lbl_over:TextField;
        public function SimpleButtonTf(){

            //this.super();
            var _container_up:DisplayObjectContainer = DisplayObjectContainer(this.upState);
            var _container_down:DisplayObjectContainer = DisplayObjectContainer(this.downState);
            var _container_over:DisplayObjectContainer = DisplayObjectContainer(this.overState);
            lbl_up = _container_up.getChildAt(1) as TextField;
            lbl_down = _container_down.getChildAt(1) as TextField;
            lbl_over = _container_over.getChildAt(1) as TextField;
        }
        public function set text(str:String):void {

            lbl_up.text = str;
            lbl_down.text = str;
            lbl_over.text = str;
        }

        public function get text():String {

            return lbl_up.text;
        }
    }
}