动态文本无法更改

时间:2012-08-31 14:40:01

标签: flash dynamic actionscript textfield

我在flash中制作了一个预加载屏幕,我有一个preloader MovieClip,它包含progressBar和一个progressText MC-s都是由我创建的,在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() + "%";
    }

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

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

请帮忙

1 个答案:

答案 0 :(得分:1)

听起来我觉得你试图嵌入一个字体是不成功的。如果您可以在设置TextFormat实例的TextField的位置发布代码会很有用,但您可以尝试将字体直接设置为“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;
        }
    }
}