带文本的flash简单按钮
我在Flash cs5-as3中有一个名为btn1的简单按钮,里面有一个名为text_txt的动态文本 目标只是简单地改变文本,但是带文本的flash简单按钮,flash,actionscript-3,Flash,Actionscript 3,我在Flash cs5-as3中有一个名为btn1的简单按钮,里面有一个名为text_txt的动态文本 目标只是简单地改变文本,但是 btn1.visible=true; // works fine this.btn1.text_txt.text="hello"; // give a NULL error 我的问题是:如何以编程方式更改按钮内的文本?因为我有FlashDevelop,所以我只能向您展示如何以编程方式执行所有操作 如果您处理的是Sprite对象(我推荐),那么以下是您在Sprit
btn1.visible=true; // works fine
this.btn1.text_txt.text="hello"; // give a NULL error
我的问题是:如何以编程方式更改按钮内的文本?因为我有FlashDevelop,所以我只能向您展示如何以编程方式执行所有操作 如果您处理的是
Sprite
对象(我推荐),那么以下是您在Sprite
对象中访问TextField
的方式:
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
的TextField
对象,并为其name
属性分配字符串“TextField”,该字符串与设置其实例名称相同
接下来实例化一个名为rectangleShape
的Shape
对象,该对象以图形方式配置为看起来像一个简单的红色矩形
接下来,将实例化名为buttonSprite
的Sprite
显示对象对象,并将textField
和rectangleShape
显示对象添加到其中。然后将Sprite
显示对象容器添加到后台
最后,调用按钮写入
显示对象容器的getChildByName()
方法,并返回文本字段
显示对象。为此,textField
display对象的name属性必须作为getChildByName()
methods的参数提供。接下来,返回的textField
对象存储在名为tf
的本地textField
对象中,现在您可以访问textField
[更新]
以下是通过SimpleButton
对象访问TextField
对象的方法,类似于通过Sprite
对象访问它(但我不建议这样做):
需要使用基本类MovieClip吗 btn1需要有3个框架和文本\u txt-文本字段
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(\u text:String,\u MovieClip:MovieClip)
,以实现上述功能。
抱歉,我的英语有一种简单的方法可以访问SimpleButton的子项: 例如,在处于启动状态的SimpleButton(名为_myButton)中,我有一个标签(其实例名称无关紧要)和一个精灵(位于层0):
var\u container:DisplayObjectContainer=DisplayObjectContainer(\u myButton.upState)
var_spt:Sprite=Sprite(_container.getChildAt(0))
var_lbl:Label=Label(_container.getChildAt(1));
评论:-您可以访问不同的按钮状态:upState、downState、hitTestState、overState
-您可以强制转换到DisplayObjectContainer以获取子对象
-您不能(至少直接)使用getChildByName,因为实例名称将动态生成。将此类添加到按钮中:
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;
}
}
}
btn1
扩展什么类<代码>简单按钮<代码>电影剪辑<代码>精灵?我知道你说你有一个“简单的按钮”,但答案取决于它扩展了什么类。您是通过编程还是手动创建btn1?
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;
}
}
}