私はこの効果を達成するために使用できるクラスを作成しました(あなたのためだけです!-しかし、それは非常に単純で退屈です...)。明らかに、ある時点でこのコードを確認することはあなたの興味の対象ですが、どのように機能するかを知らなくても、このコードの使用方法(非常に簡単です)を紹介します。
フラッシュで、新しい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)を指定する必要があることに注意してください。フィールドテキストを使用している場合のように、空白のままにすることはできません。
これがお役に立てば幸いです。行き詰まったらお知らせください。