トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     タイプライター風にテキストを表示させる方法について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miyaryu
Åê¹ÆNo.34237
投稿日時: 2007-7-20 0:30
常連
居住地:
投稿: 79
使用環境:
windowsXP,flash CS4
タイプライター風にテキストを表示させる方法について
miyaryuです。いつもお世話になっております。
質問の多さをお許しください。

ほかの方の以前の投稿で、確か野中様の助言だったと思うのですが、タイプライター表示のスクリプトが提示されていたものについてです。

str = "ABCDEFGHIJKLMN";
strArray = new Array();
num = 0;
for (i=0; i<str.length; i++) {
strArray.push(str.substr(i, 1));
strDisplay += strArray[num];
num++;
menu_mc.Menu_TXT.text = strDisplay;
}

この方法でタイプライター風に表示するのですが、
strDisplay += strArray[num];
の部分で困っています。strArray配列に1文字ずつ追加していくのですが、このときstrDisplayをトレースしてみると、最終的にundefinedABCDEFGHIJKLMN
と出てしまいます。undefinedが出てしまう理由がどうしても分からないのですが、何が原因なのでしょうか?
ニノミヤ カズノリ
Åê¹ÆNo.34238
投稿日時: 2007-7-20 0:40
職人
居住地: 東京
投稿: 430
使用環境:
CS4
.4.11, .5.7
XP Pro(sp3)
Flash Player 10,0,22,87,
AIR 1.5.1,
IE 5.5 & 6 & 7 & 8,
Firefox 2.0.0.20 & 3.0.11 & 3.5,
Opera 9.64,
Safari 4,
Google Chrome 2.0.172.31,
Netscape 7.1
Re: タイプライター風にテキストを表示させる方法について
引用:

miyaryuさんは書きました:

str = "ABCDEFGHIJKLMN";
strArray = new Array();
num = 0;
for (i=0; i<str.length; i++) {
	strArray.push(str.substr(i, 1));
	strDisplay += strArray[num];
	num++;
	menu_mc.Menu_TXT.text = strDisplay;
}

strDisplayをトレースしてみると、最終的にundefinedABCDEFGHIJKLMN
と出てしまいます。undefinedが出てしまう理由がどうしても分からないのですが、何が原因なのでしょうか?


strDisplayを初期化していない事が原因だと思われます。
str = "ABCDEFGHIJKLMN";
strArray = new Array();
strDisplay = "";
num = 0;
for (i=0; i<str.length; i++) {
	strArray.push(str.substr(i, 1));
	strDisplay += strArray[num];
	num++;
	menu_mc.Menu_TXT.text = strDisplay;
}
赤文字部分を付け足して試してみて下さい。
野中文雄
Åê¹ÆNo.34239
投稿日時: 2007-7-20 1:27
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: タイプライター風にテキストを表示させる方法について
おそらく、Flash MX/Flash Player 6の頃のスレッドですね。Flash Player 7から仕様が変わったためです。
引用:
miyaryuさんは書きました:
strDisplay += strArray[num];
の部分で困っています。strArray配列に1文字ずつ追加していくのですが、このときstrDisplayをトレースしてみると、最終的にundefinedABCDEFGHIJKLMN
と出てしまいます。undefinedが出てしまう理由がどうしても分からないのですが、何が原因なのでしょうか?


----------------
 

ひろゆき
Åê¹ÆNo.34240
投稿日時: 2007-7-20 1:48
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: タイプライター風にテキストを表示させる方法について
引用:
野中文雄さんは書きました:
おそらく、Flash MX/Flash Player 6の頃のスレッドですね。

おそらく、Flash5で作ってた頃です。

いまなら、これですね。
ぴぴぴっと表示される文字


引用:
質問の多さをお許しください。

ほかの方の以前の投稿で、確か野中様の助言だったと思うのですが、タイプライター表示のスクリプトが提示されていたものについてです

どこかのスレッドを参考にされたのであれば、リンク先のURLなどを示すなどして、
回答者の負担を減らしてもよろしいのでは?


----------------
質問する際は、回答者に具体的な情報を与えてください。

miyaryu
Åê¹ÆNo.34341
投稿日時: 2007-7-24 23:18
常連
居住地:
投稿: 79
使用環境:
windowsXP,flash CS4
Re: タイプライター風にテキストを表示させる方法について
miyaryuです。
この質問について、まだ終了させていなかったことをお詫びいたします。

「ぴぴぴっと表示される文字」にて確認いたしました。確かにこれを模範にコーディングしたところ、動作を正常に確認することができました。ひとつだけ補足質問があるのですが、
function typingText():Void {
se_snd.start();
letter.str_txt.text = entry_str.substr(0, textPos)+"_";
letter.str_txt.filters = [glowFilter];
textPos++;
if (textPos > textMax) {
letter.str_txt.text = entry_str;
clearInterval(typingID);
delete typingID;
}
}

このコードではentry_strの指定文字数を1ずつ増やして取得していっていますよね。その際に、textPos++;で増加していってifにて最大文字数と比較したときに満たしているか判断していますよね。質問の内容はそこで、条件を満たしていないときにプログラム終了とならずに、textPos++;にて増加させletter.str_txt.text = entry_str.substr(0, textPos)+"_";に戻ることができることが不思議なんです。
私は、普段VISUAL BASICを扱っているのですが、普通IF文を使って条件を満たしていない場合、変数等を増加させてからGOTOで戻す方法がとられます。ここでこんなものを出すべきではないのでしょうが・・・
例)
start:
IF i<5 then
処理
else
i=i+1
goto start
end if

ASの場合、条件を満たしていない場合、満たすまで繰り返すのでしょうか?根本的な部分ですが、よろしくお願いします。
ひろゆき
Åê¹ÆNo.34342
投稿日時: 2007-7-24 23:30
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: タイプライター風にテキストを表示させる方法について
引用:
miyaryuさんは書きました:
ASの場合、条件を満たしていない場合、満たすまで繰り返すのでしょうか?

typingID = setInterval(this, "typingText", 100);

setInterval をヘルプで確認してください。

あるいは、以下のスクリプトでテスト。
新規flaファイルにて。(ムービープレビューにて確認)

_root 第1フレームに
var testID:Number = setInterval(this, "test", 500);
function test():Void {
	trace("test");
}
と記述。

var count:Number = 0;
var testID:Number = setInterval(this, "test", 500);
function test():Void {
	trace("test");
	count++;
	if (count > 5) {
		clearInterval(testID);
		delete testID;
	}
}
と記述。

setIntervalを使う (1)」も参考まで。


----------------
質問する際は、回答者に具体的な情報を与えてください。

miyaryu
Åê¹ÆNo.34354
投稿日時: 2007-7-25 12:17
常連
居住地:
投稿: 79
使用環境:
windowsXP,flash CS4
Re: タイプライター風にテキストを表示させる方法について
setInterval() を使用すると、任意の関数を一定の間隔で繰り返し実行できるのですね
まったくの見当違いでした。
どうも有り難うございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops