ActionScript 3.0中修改TextField的函数

3

我一周前开始学习ActionScript 3.0,想做一个简单的游戏。它将以显示欢迎消息(“按按钮开始”)的窗口开始,并且有一个从文本开始并指向按钮的箭头。我想要从代码中创建所有内容。我使用TextField来显示欢迎消息,但是遇到了一些问题。我创建了一个AIR for Desktop的.fla文件。然后我将一个名为mainFunzioneModidificaTest.as的类与该文件关联。在这个类中,我编写了一个函数来设置第一个窗口的文本。我使用TextFormat,但是当我运行.fla文件时,我看到的文本没有任何格式。颜色、大小和字体都没有改变。以下是代码。有人能帮帮我吗?谢谢!

package {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFormat;

public class mainFunzioneModificaTest extends MovieClip {

    public function mainFunzioneModificaTest() {
        setText();
    }
    function setText(): void {
        var text: TextField = new TextField();
        var myFormat: TextFormat = new TextFormat("Arial", 39, 0xFF0000);
        text.setTextFormat(myFormat);
        text.text = "Hello";
        addChild(text);
    }

}

}


你可以尝试使用 var txt: TextField = new TextField(); 而不是 var text: TextField = new TextField(); - Jijo Cleetus
我已经尝试过了。它不起作用。不过还是谢谢! - SpaghettiFunk
1个回答

3
在使用setTextFormat()之前,您需要先设置文本,或者可以使用text.defaultTextFormat = myFormat。根据TextFormat文档所述,使用TextField.defaultTextFormat属性可在将文本添加到TextField之前应用格式,在将文本添加到TextField后使用setTextFormat()方法添加格式。请先设置文本内容再调用setTextFormat()方法:
function setText(): void {
    var text: TextField = new TextField();
    var myFormat: TextFormat = new TextFormat("Arial", 39, 0xFF0000);
    text.text = "Hello";
    text.setTextFormat(myFormat);
    addChild(text);
}

或者设置defaultTextFormat:
function setText(): void {
    var text: TextField = new TextField();
    var myFormat: TextFormat = new TextFormat("Arial", 39, 0xFF0000);
    text.defaultTextFormat = myFormat;
    text.text = "Hello";
    addChild(text);
}

谢谢,现在它可以工作了!所以每次在应用“样式”之前都必须设置文本吗?现在我有另一个问题。我能否向使用函数drawTriangles()绘制的三角形添加addEventListener? - SpaghettiFunk
使用 defaultTextFormat 设置默认应用于所有文本的文本样式。如果您在单独的 Sprite 实例上绘制三角形,则可以向该 sprite 添加事件侦听器。在同一 DisplayObject 上绘制的所有路径都将触发相同的事件侦听器,它们不是独立的。为不同的交互元素使用不同的 Sprite 实例。 - Sly_cardinal
请点击勾选标记,将此答案标记为正确答案。 - Neal Davis
我已经使用Sprite创建了指向按钮的箭头,但我仍然有一个问题。我能否对Sprite进行动画处理?我的意思是,我希望箭头上下移动三次,然后停止三秒钟,然后再次重复这个过程。我只想知道是否可能。谢谢! - SpaghettiFunk
是的,你可以通过代码来实现这个,但是你也可以将它制作成一个带有时间轴的MovieClip并以此方式进行动画处理。 - Sly_cardinal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接