0

我在 Flash 中制作了一个预加载屏幕,我有一个包含 progressBar 和 progressText MC-s 的预加载器 MovieClip,它们都是由我创建的,在 preLoader 类中我使用如下代码:

... ldrInf.addEventListener(ProgressEvent.PROGRESS, onProgress); ...

private function onProgress(e:ProgressEvent):void {
        var percent:Number = e.bytesLoaded / e.bytesTotal;
        progressBar.scaleX = percent;           
        progressText.text = Math.floor(percent * 100).toString() + "%";
    }

缩放效果很好,但文本没有改变,我设置了“自动声明阶段实例”,我有一个这样的错误(我不知道它必须对我的问题做些什么,但无论如何):ReferenceError:错误# 1065: 变量 Font1 未定义。

如果我为 ProgressText MC 创建一个类,则会收到错误消息:1119:通过静态类型 ProgressText 的引用访问可能未定义的属性文本。我知道这是因为,好吧,我的类中没有text属性,但是 text 变量是我想的文本字段的某种内置变量,所以我认为我可能不必定义它。

请帮忙

4

1 回答 1

1

在我看来,您尝试嵌入字体未成功。如果您可以在设置实例的位置发布代码,这将很有用TextFormatTextField尽管您可以尝试将字体直接设置为“Arial”或完全注释掉该行以排除问题的原因。

如果您想为您创建一个自定义类TextField(尽管尚不清楚在这种情况下是否完全有必要),您需要TextField在自定义类中扩展该类(在这种情况下它将继承该TextField.text属性)或实现一个 setter您自己在TextField作为类属性存储的实例上设置文本。

扩展 TextField(继承)示例:

package 
{
    import flash.text.TextField;

    public class CustomTextField extends TextField
    {
        public function CustomTextField()
        {

        }

        override public function set text(value:String):void
        {
            // could do custom stuff here or omit override altogether if it isn't required
            value = "custom " + value;

            super.text = value;
        }
    }
}  

TextField 属性(组成)示例:

package 
{
    import flash.text.TextField;

    public class CustomTextField extends Sprite
    {
        private var textField:TextField = new TextField();

        public function CustomTextField()
        {
            this.addChild(textField);
        }

        public function setText(value:String):void
        {
            textField.text = value;
        }
    }
}
于 2012-08-31T21:37:49.470 回答