2

我正在尝试重新创建在此页面上看到的效果:http: //flupie.net/blog/2010/12/typewriter-effect-with-textanim-as3/(示例#2)但没有所有单独的文件。

我不只是使用该代码的原因是因为 A)它使用字符串中的文本,我希望能够将效果应用于文本字段。B)它使用单独的.as文件,我希望它都是1个文件(我想稍后在DeviantArt上上传这个,据我所知,你只能上传.swf)

那么是否可以重新创建矩阵式打字机效果,而无需使用单独的 .as 文件并将其应用于文本字段?我真的更像是一个设计师而不是一个程序员,所以这对我来说有点太多了。

编辑:为了更清楚地了解我打算实现的目标。我想为一个虚构角色制作一个角色表(想想:名字、外表、背景等),因为这个角色是未来​​的,我想给它一种未来的感觉。所以最终结果将包含几个单独的文本字段,可能还有一些图像。所有这些文本字段应该同时“运行”。也许我还会添加更多“页面”,但我假设这是通过向时间轴添加另一个帧和一个链接到它的按钮来完成的。

我目前正在尝试破译上面链接的代码,因为这正是我想要实现的目标,包括字体和发光效果。

4

1 回答 1

1

我写了一个类(只为你而写!- 但它很简单,我很无聊......)你可以用它来实现这个效果。显然,在某些时候查看此代码符合您的兴趣,但我将向您展示如何使用它 - 它非常简单 - 不知道它是如何工作的:

在 Flash 中,创建一个新的 ActionScript 文件,将以下代码复制到其中并将其保存为 TypeFX.as - 在与 .fla 项目文件相同的目录中:

package  {
    import flash.utils.Timer;
    import flash.text.TextField;
    import flash.events.TimerEvent;

public class TypeFX {

    private var timer:Timer;
    private var text:String;
    private var pos:int = 0;
    private var field:TextField;

    public function TypeFX(field:TextField, speed:int = 200, text:String = null) {
        // constructor code

        this.field = field;

        if(text != null)
        {
            this.text = text;
        }
        else
        {
            this.text = field.text;
        }

        field.text = '';

        timer = new Timer(speed, this.text.length);
        timer.addEventListener(TimerEvent.TIMER,update);
        timer.addEventListener(TimerEvent.TIMER_COMPLETE,kill);
        timer.start();
    }

    private function update(e:TimerEvent):void
    {
        pos++;
        field.text = text.substr(0,pos);
    }

    private function kill(e:TimerEvent):void
    {
        timer.removeEventListener(TimerEvent.TIMER,update);
        timer.removeEventListener(TimerEvent.TIMER_COMPLETE,kill);
        timer.stop();
        timer = null;
        text = null;
        field = null;
    }

    }

}

同样,您无需了解即可使用它,但分解后它非常简单,您可能会喜欢看看它是如何工作的。

现在,获取一个要应用打字机效果的 TextField - 确保将其设置为“动态文本”并为其指定实例名称。例如,让我们称之为myField- 现在,打开“操作”面板。您可以通过以下几种方式应用此效果:

如果您想使用已在字段中的文本创建打字机效果(它将清除它,然后将其输入),请将以下代码添加到操作面板:

new TypeFX(myField);

这将输入字段中存在的文本,字母之间的间隔为 200 毫秒 - 如果要更改此间隔,请添加第二个参数:

new TypeFX(myField,500);

这会将延迟增加到 500 毫秒

你也可以发送一个字符串来输入,而不是使用已经在字段中的文本(这是推荐的,以后会更容易阅读,相信我!):

new TypeFX(myField, 500, "The text to type into the field");

请注意,如果您使用此方法(传递字符串),则需要指定时间(例如上面的 500),如果您只使用字段文本,则不能将其留空。

希望这会有所帮助,如果您遇到困难,请告诉我!

于 2012-10-23T00:07:38.007 回答