我的按钮对象中有一个动态文本字段。我将文本字段命名为“myText”。如何修改其中的文本? myButton.myText.text = "test";
无法使用,因为它无法访问myText
。
答案 0 :(得分:0)
更新回答:
我有两个解决方案,但有一个要求您只在按钮中有一个TextField而没有其他对象。
<强> 1 强>
如果按钮中只有一个TextField,则按钮的upState
属性将为TextField,然后您可以直接设置其text属性:
myButton.upState.text = "Click Me";
myButton.downState.text = "Click Me";
myButton.overState.text = "Click Me";
<强> 2 强>
如果第一种技术不适用于您,解决方案会更复杂一些。
首先,在库中创建一个包含按钮上框当前内容的MovieClip。将其设置为导出并为其指定类名(TextHolder
)。然后,您可以创建一个TextHolder对象,设置其textLabel的文本属性,并将其分配给每个按钮状态:
var buttonState:TextHolder = new TextHolder();
buttonState.myText.text = "Click me";
myButton.upState = myButton.downState = myButton.overState = myButton.hitTestState = buttonState;
如果要创建不同的状态,例如使用不同颜色的文本,则必须为不同的状态创建不同的对象:
var buttonState:TextHolder = new TextHolder();
var buttonStateOver:TextHolder = new TextHolder();
buttonState.myText.text = buttonStateOver.myText.text = "Hello";
buttonStateOver.x = 10;
myButton.upState = buttonState;
myButton.hitTestState = buttonState;
myButton.downState = myButton.overState = buttonStateOver;
答案 1 :(得分:0)
我通常只创建一个包含空白按钮和动态文本字段的MovieClip。
如果在文本字段上设置mouseEnabled = false
,则不会干扰按钮上的鼠标事件。
编辑:
以下是我有时使用的自定义按钮类的示例:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField
public class CustomButton extends MovieClip {
public var t_label:TextField;
public function CustomButton() {
t_label.mouseEnabled = false;
mouseChildren = false;
buttonMode = true;
this.gotoAndStop("normal");
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
public function setLabel(buttonLabel:String):void {
t_label.text = buttonLabel;
}
public function destroy():void {
removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
protected function onMouseOver(e:MouseEvent):void {
this.gotoAndStop("over");
}
protected function onMouseOut(e:MouseEvent):void {
this.gotoAndStop("normal");
}
protected function onMouseDown(e:MouseEvent):void {
this.gotoAndPlay("down");
}
}
}
您可以将此链接到标记为“正常”,“结束”和“向下”的帧的MovieClip,它将像具有动态标签的普通按钮一样运行。
如果您需要为事件处理程序中的不同状态自定义文本外观。