2

このページに表示されている効果を再現しようとしています:http://flupie.net/blog/2010/12/typewriter-effect-with-textanim-as3/(例#2)ただし、すべての個別のファイルはありません。

そのコードだけを使用しない理由は、A)文字列内のテキストを使用しており、その効果をテキストフィールドに適用できるようにしたいためです。B)別々の.asファイルを使用していて、すべてを1つのファイルにしたい(これは後でDeviantArtにアップロードしたいのですが、私が知る限り、アップロードできるのは.swfのみです)。

では、.asファイルを分離してテキストフィールドに適用することなく、そのマトリックススタイルのタイプライター効果を再現することは可能ですか?私は本当にプログラマーというよりデザイナーなので、これは私には少し多すぎます。

編集:私が達成しようとしていることについてもう少し明確にするため。架空のキャラクター(名前、見た目、背景など)のキャラクターシートを作りたいのですが、このキャラクターは未来なので、未来的な感じを与えたいです。したがって、最終結果には、いくつかの個別のテキストフィールドと、場合によってはいくつかの画像が含まれます。これらのテキストフィールドはすべて同時に「実行」する必要があります。おそらく、さらにいくつかの「ページ」を追加しますが、これは、タイムラインに別のフレームとそれにリンクするボタンを追加するだけで行われると想定しています。

私は現在、上記のリンクされたコードを解読しようとしています。それはまさに私が達成しようとしていることであり、フォントとグロー効果が含まれているからです。

4

1 に答える 1

1

私はこの効果を達成するために使用できるクラスを作成しました(あなたのためだけです!-しかし、それは非常に単純で退屈です...)。明らかに、ある時点でこのコードを確認することはあなたの興味の対象ですが、どのように機能するかを知らなくても、このコードの使用方法(非常に簡単です)を紹介します。

フラッシュで、新しい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);

これにより、フィールドに存在していたテキストが文字の間隔200msで入力されます。この間隔を変更する場合は、2番目の引数を追加します。

new TypeFX(myField,500);

これにより、遅延が500ミリ秒に増加します

すでにフィールドにあるテキストを使用するのではなく、文字列を送信して入力することもできます(これをお勧めします。後で読みやすくなります。信頼してください!):

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

このメソッド(文字列を渡す)を使用している場合は、時刻(たとえば、上記の500)を指定する必要があることに注意してください。フィールドテキストを使用している場合のように、空白のままにすることはできません。

これがお役に立てば幸いです。行き詰まったらお知らせください。

于 2012-10-23T00:07:38.007 に答える