「箱庭ノベルズ」ですか。
面白い物を開発されている方がいらっしゃるのですね。
勉強になりました。
本題ですが,
Flash では,文字を徐々に出すには,
普通はモーショントゥイーンを使うと思いますよ↓。
フェードインする文字 FLASHRAVE - FLASH 講座 -
http://flashrave.org/anima/fade_in/index.html
すごく単純技法というか,
Flash を始めて3日目くらいの方がされる方法というか,
ごく普通に考えれば,そうなると思います。
上記URLでは,
静止テキストにマスクをかけて,
マスクをモーショントゥイーンさせています。
埋め込みフォントを使わないダイナミックテキストだと,
静止テキストとは違って,手動で設置したマスクはかからないので,
逆に,もっと単純にマスクなど使わず,
背景色と同じ塗りをムービークリップ(MC)に変換して,
ダイナミックテキストの上に重ねて,
重ねたムービークリップをモーショントゥイーンで動かします。
~例~
↓背景色と同じ塗りの色のMC
□□□□□□□□
↓ダイナミックテキスト
あいうえお
↓重ねて
□□□□□□□□
↓モーショントゥイーン
□□□□□□□□
あ□□□□□□□□ →
あい□□□□□□□□ →
あいう□□□□□□□□ →
あいうえ□□□□□□□□ →
あいうえお□□□□□□□□ →
右横にMCを動かすスペースが無い場合は,
MCを縮めるモーショントゥイーンをしても良いです。
↓モーショントゥイーン
□□□□□□□□
あ□□□□□□□
あい□□□□□□
あいう□□□□□
あいうえ□□□□
あいうえお□□□
もちろん,
段落を意識してモーショントゥイーンさせても良いでしょう。
たいていは,
マスクを使うか,上記のようにマスクを使わずにもっと単純にモーショントゥイーンさせるかでしょうね。
単純&簡単です。
======================
そうではなくて,
ActionScript で文字を1文字ずつ出したい場合は,
普通に1文字ずつダイナミックテキストに表示させるようにスクリプトを組めば良いと思います。
~簡単な例~
新規ドキュメントを作成して,
ステージ上に,
「myField」 というインスタンス名のダイナミックテキストフィールド(複数行設定)を用意しておいたとします。
そして,
_root のフレーム1に次のように書きます。
----------------------------------------------
// 表示させる文字列データ myData の用意(可変)
var myData = "あいうえお\nかきくけこ\nさしすせそ";
//
// カウンタ用変数 cnt の初期化
var cnt = 0;
// 文字列データの文字数の取得
var dataLen = myData.length;
//
// 順次表示するユーザ定義関数 myFunc の定義
function myFunc() {
// カウンタの値を 1 加算
cnt++;
// myField に myData を指定文字数表示
myField.text = myData.substr(0, cnt);
// 即更新
updateAfterEvent();
// もし カウンタの値が文字数以上になれば
if (cnt>=dataLen) {
// setInterval を解除
clearInterval(myID);
}
}
//
// 指定時間(ミリ秒)ごとに myFunc を実行
myID = setInterval(myFunc, 100);
---------------------------------------------
これで,
あいうえお
かきくけこ
さしすせそ
という文字列が,
myField. というインスタンス名のダイナミックテキストに,
100ミリ秒(0.1秒)間隔で順次表示されます。
"あいうえお\nかきくけこ\nさしすせそ"の
\n は改行コードです。
ただし,
上記の場合,文字の表示は一定間隔です。
> 段落などを意識した文字の流し方
これが最大の難関ですね。
コンピュータは人間ではありませんから,
文章も理解できませんし,段落も理解できません。
したがって,なんとか人間が考えて段落を待たせる処理をほどこさないとならないでしょう。
他にも方法はあると思いますが,
以下は私が勝手に考えた1つの方法例です。
例として,文章自体は上記のままで,
次のような段落を考えてみます。
↓を段落とします。
あいう↓
えお\n↓
かきくけ↓
こ\nさしすせ
上記のような場合,
3文字出して段落,
5文字出して段落,
10文字出して段落。
となります。
\n は1文字としてカウントされます。
上記の状態を言いかえると,
4文字目を出すのを少し待つ,
6文字目を出すのを少し待つ,
11文字目を出すのを少し待つ。
となります。
これをプログラムすると次のようになります。
------------------------------------------------
// 表示させる文字列データ myData の用意(可変)
var myData = "あいうえお\nかきくけこ\nさしすせそ";
//
// カウンタ用変数 cnt の初期化
var cnt = 0;
// 待つ時間(間隔)の設定
var slpTime = 4;
// 待つカウントの初期化
var slpCnt = 0;
// 文字列データの文字数の取得
var dataLen = myData.length;
//
// 順次表示するユーザ定義関数 myFunc の定義
function myFunc() {
// カウンタの値を 1 加算
cnt++;
// cnt が 4 or 6 or 11 で 待つ時間以下のとき
if ((cnt == 4 || cnt == 6 || cnt == 11) && slpCnt<=slpTime) {
// カウンタを戻す
cnt--;
// 待つカウントを加算する
slpCnt++;
} else {
// それ以外は 待つカウント を 0 に
slpCnt = 0;
}
// myField に myData を指定文字数表示
myField.text = myData.substr(0, cnt);
// 即更新
updateAfterEvent();
// もし カウンタの値が文字数以上になれば
if (cnt>=dataLen) {
// setInterval を解除
clearInterval(myID);
}
}
//
// 指定時間(ミリ秒)ごとに myFunc を実行
myID = setInterval(myFunc, 100);
------------------------------------------------
1つの方法例ですが,
一応はこれでできますね。
お礼
文字のスクロールに関しては バッチリです。 #2も実際に動かしてみて 「おぉ!」ってなりました。 今日だした質問なので 締め切るのはまだ早いかな?って 思いまして、解決しちゃってるのですが お礼ポイントは後日振らせて貰います。