设置按钮对象内的动态文本字段的值

时间:2011-11-01 22:24:44

标签: flash actionscript-3

我的按钮对象中有一个动态文本字段。我将文本字段命名为“myText”。如何修改其中的文本? myButton.myText.text = "test";无法使用,因为它无法访问myText

2 个答案:

答案 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,它将像具有动态标签的普通按钮一样运行。

如果您需要为事件处理程序中的不同状态自定义文本外观。