FLASH講座 ーアクションスクリプトの実践的事始めー
応用編
(8) テキスト(
文字)のエフェクト(2)
 (27)テキストのエフェクトでは、アクションスクリプトで文字列にエフェクトをかける講座を学ばれました。 この(2)では、複数の文字列を同時、または入れ替えて表示できるようにヴァージョンアップする講座です。

 基本的には、前回のスクリプトを踏襲しています。 違う点は、各文字列のムービークリップに番号を付けて独立に制御するようにしたことと、表示開始時間から設定した時間が経過するとフェイドアウトするようなスクリプトに更新したところです。
ステージの準備
  フレームレート30に設定したステージを準備し(大きさ、背景色は適宜決める)、「挿入」、「新規シンボル」メニューで、シンボルを作成する。 この例では、シンボル名を tField_minchoとし、リンケージを同名で設定した。 ついで、シンボル編集画面で、1文字分のダイナミックテキストフィールドを作成し、フォントをMSP明朝、インスタンス名を tF に設定する。
  このテキストフィールドを複数個作成し、tField_gothic、tField_pop、tField_times など使いたいFontを設定する。
  なお、文字列に回転やアルファー値の変化を付与したい場合は、その文字列を埋め込む必要がある。 座標移動、スケール変化、色づけには埋め込み不要である。 埋め込みは、テキストフィールド(tField)編集画面でプロパティーインスペクターの「埋め込みボタン」をクリックして現れるウインドウで、追加する文字を指定する。 これは、各テキストフィールドで使う文字だけを別々に登録する。
  文字列表示後に画面にリンクを貼る場合は、全画面を覆う透明の矩形を描き、シンボル(ここでは、link_screen)に変換し、画面からは削除しておく。
スクリプト全角スペースが入っている行は、コピー・ペイストだけではエラーになります)
textEffect.flaファイルに

//文字列
var $str:String = "Wellcome to My Site";
//テキストフィールド名
var tField:String = "tField_impact";
//表示位置開始座標
var targetx0:Number = 30;
var targety0:Number = 20;

//Effect開始座標
var x0:Number = 200;
var y0:Number = 0;
var narabi:Number=0;

//文字表示間隔;
var kankaku:Number = 3;
//文字表示時間差(ミリ秒)
var delay0:Number = 0;
//文字format
t_fmt = new TextFormat();
t_fmt.color = 0xff9900;//文字色
t_fmt.size = 32;//文字サイズ(ポイント)
var randomcolor:Number=0;

//文字初期scale(%)
var scalex0:Number = 0;
var scaley0:Number = 0;

//文字初期アルファー値(%)
var alpha0:Number =50;
//文字の回転
var kaitensu:Number=3;
var kakudo:Number=45;
var mawari:Number=0;

//移動の速度
var speed:Number=4;
//文字列滞留時間(FadeOutまでの時間・ミリ秒)
var fadeout:Number=1;
var stay:Number=4000;


//クラスの呼び出し
var tE:textEffect = new textEffect(1,tField);






フォントをImpactに設定






初期に文字列を最終配列にするときは 1 にする



全体を一緒に動かすときは0にする




文字をランダムに色付けするときは 1 にする






回転数
回転速度
時計回り:+1、反時計回:-1、回転させない:0

文字移動のイージング速度

FadeOut させる:1 させない:0
表示させてから、FadeOutさせるまでの時間


クラスファイルで1番目のインスタンスを発生させる
次のインスタンスから2,3,4,,,,とする
以上のスクリプトが文字列一つ分で、各文字列ごとに、文字列を表示したいタイミングで、タイムラインにキーフレームを挿入し、上記スクリプトを望みのエフェクトの設定にして、書き込む。
本例の場合は、以下のタイミングで設定している。 文字のsizeや色、動きの座標、表示時間間隔などのパラメーターはそれぞれに設定しているが省略する。

FRAME1:  $str:"Wellcome to My Site"、フォント:Impact
FRAME30: $str="FLASHのお勉強"、フォント:HGS創英角ポップ体
FRAME140:$str="FLASHのモーショントウイーンの入門から"、フォント:MSP明朝
FRAME170:$str="アクションスクリプトの実践まで"、フォント:
FRAME200:$str="数々の実例とわかりやすい解説により"、フォント:
FRAME230:$str="FLASHのサイトを作成するまでを学びます"、フォント:
FRAME330:$str="今すぐ学びたい方は"、フォント:HGS創英角ポップ体
FRAME380:$str="flash1234/"、フォント:Times New Roman Baltic
FRAME381:以下のlink用のスクリプトを記載
  _root.attachMovie("link_screen","sc",1000);
  _root.sc.onRelease=function() {
    getURL("http://flash1234/");
  }

FRAME450: stop();
なお、FRAMEを30間隔にしているところは、FRAMEレートが30fpsなので、stayを1000ミリ秒差にすると同時にフェイドアウトすることになる。
textEffect.asファイルに

class textEffect extends TextField {
 private var ww:Number = 0;
 function textEffect(n:Number, tField:String){
  for (var i:Number = 0; i<=$str.length-1; i++) {
   delay = delay0*i;
   tE = _root.attachMovie(tField, tField+n+i,
      _root.getNextHighestDepth());
   tE.tF.text = $str.charAt(i);
   if (randomcolor == 1) {
    t_fmt.color = Math.random()*255*255*255;
   }
   tE.tF.setTextFormat(t_fmt);
   tE._x = x0;
   tE.w = t_fmt.getTextExtent(tE.tF.text).width+kankaku;
   if (narabi == 1) {
    tE._x = x0+ww;
   }
   tE._y = y0;
   tE._xscale = scalex0;
   tE._yscale = scaley0;
   tE._alpha = alpha0;
   tE._visible = false;
   targetx = targetx0+ww;
   targety = targety0;
   ww += tE.w;
   textEffect2(tE, targetx, targety, delay, mawari, kakudo,
           fadeout, stay);
  }
 }
 function textEffect2(tE:MovieClip, targetx:Number,
  targety:Number, delay:Number, mawari:Number,
  kakudo:Number, fadeout:Number, stay:Number) {
  var count:Number;
  var stay0:Number = getTimer();
  tE.interval = function() {
   clearInterval(tE.ID);
   tE.count = 1;
   tE.onEnterFrame = function() {
    this._visible = true;
    this._xscale += (100-this._xscale)/speed;
    this._yscale += (100-this._yscale)/speed;
    this._alpha += (100-this._alpha)/speed;
    this._x += (targetx-this._x)/speed;
    this._y += (targety-this._y)/speed;
    this._rotation += mawari*kakudo;
    if (tE.count*kakudo>=kaitensu*360) {
     kakudo = 0;
    }
    tE.count++;
    if (getTimer()>=stay0+stay && fadeout == 1) {
     this.onEnterFrame = function() {
     this._alpha += (0-this._alpha)/6;
     if (this._alpha<2) {
      this._alpha = 0;
      delete this.onEnterFrame;
      delete tE.onEnterFrame;
     }
    };
   }
  };
 };
 tE.ID = setInterval(tE, "interval", delay);
 }
}


クラスの定義(TextFieldクラスを継承)
文字幅の積算に使う変数

文字の数だけ
文字表示間隔
ムービークリップtField(n+1),tField(n+2),,,,,を画面に表示
テキストフィールドtFにi番目の文字を入れる
もし、randomcolorが1なら、文字にランダムに発生した色を付ける

文字フォーマットのセット
登場開始x座標
tEに入っている文字の幅+kankaku
もし、narabiが1なら
文字をx軸方向に最終配列にする


登場開始y座標
初期xスケール
初期yスケール
初期アルファー
初期に文字を非表示
最終静止状態のx座標
最終静止状態のy座標
文字幅の積算

関数textEffect2の呼び出し


関数textEffect2(引数)


countの定義
時間取得
インターバル(間隔を取って実行する)の設定
実行済みIntervalをクリヤー
countを1に
フレームアクション
文字列を表示
xスケールを最終的に100に

アルファー値を100に
最終x座標へ
最終y座標へ
文字の回転
もし指定回数を回ったら
回転を止める

countを1増やす
もし、時間取得からstay経過し、fadeoutが1だったら

アルファー値を徐々に0に(FadeOut)
もし、アルファー値が2より小さくなったら、
アルファー値を0に
FrameWorkを止める
   〃





インターバルの設定どおりに実行
SAMPLE (replayは、ブラウザの更新ボタンで)
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 このサイトで使用しましたflashソフトはflash mx 2004年版(Flash Japan)- flash8 及び FlashCS3-2007年版です。
 flash講座(フラッシュ講座)は、Yoshioka氏(通称、ひげ親父)による制作です。 コツコツと作られたflash素材(flashアニメ、スクリプト)はユーザーの方により保存変更され動画flash(動画フラッシュ)や携帯flash(待受flash)として利用されて来ました。
 氏は、flashスクリプトについての学習を、パソコン塾講師活躍中に始められ、独立した今も続けておられます。 
  macromedia flashソフトは新しくadobe flash時代に入りましたので、これを機会にflash学習サイトを「flash講座1234」としてリニューアルいたしました。 引き続きご愛顧承りますよう、よろしくお願いいたします。                                                                           (by Hiraoka)
HOME   Flash講座総リスト     flash アクションスクリプト 応用編 (1)