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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     ActionScript内で待機したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hiruma
Åê¹ÆNo.1868
投稿日時: 2003-12-3 12:53
半人前
居住地:
投稿: 42
使用環境:
Win2000 + MX pro 2004
MacOS10.2 + MX
ActionScript内で待機したい
文字を一文字ずつ表示させたいのですが

//文字を一文字ずつ表示
i = com.length;
for (j=0;j<i;j++) {
_parent.comment=com.slice(0,j);
    //待機時間
for (k=0;k<10000;k++){
l++;
}
}

としていますが、一回目のfor文の部分はうまく待機してくれるのですが、2回目以降キャッシュしてしまうのかすぐに表示されてしまいます。
何か良い方法はないでしょうか。

XP+MXで作業しています。

よろしくお願いいたします。
近藤泰一
Åê¹ÆNo.1876
投稿日時: 2003-12-3 14:38
常連
居住地: 神奈川県
投稿: 112
使用環境:
Pro Pro
Re: ActionScript内で待機したい
「待機したい」というのは、一定時間止まってから先に進むようにするということでしょうか。
であれば、forで計算させて時間を空けるというのは良くないと思います。
マシンによって計算の時間は変わりますし。

一定時間待つのであれば、いろいろやり方がありますが、
フレームをその分のばすのが一番簡単なのでFlashらしいのではないでしょうか。
スクリプトで間隔を空けるのであれば、setIntervalを使うのが簡単でしょう。
forではなくて、enterFrameでカウントアップしていくとか、getTimerで制御するとか
そういう方法も考えられます。

どのような目的であるかによって最適な方法も変わってくると思いますよ。


----------------
Condo Hirokazu
http://www.condo.fromc.jp/flash/

とんび
Åê¹ÆNo.1881
投稿日時: 2003-12-3 17:06
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: ActionScript内で待機したい
 kondoさんの書いてらっしゃるように、forをぶん回す方法には時間をチェックする部分が無いし、フレーム進行を止めてしまうので、Flash的には色々と問題あります。
 私が作ったのは、次のURLで書いているように、フレームアクションから関数を呼び出して、そこでカウントアップさせるという方法です。

http://www.tonbi.jp/Flash/Diary/009/index.html

 もちろん、setIntervalなんかを利用するのもいいと思います。setIntervalはフレーム単位じゃなくてミリ秒単位なので、設定する数字の感覚が掴みにくいかもしれません。
hiruma
Åê¹ÆNo.1896
投稿日時: 2003-12-3 21:56
半人前
居住地:
投稿: 42
使用環境:
Win2000 + MX pro 2004
MacOS10.2 + MX
Re: ActionScript内で待機したい
Condoさま、tonbiさま
ありがとうございました。
ご指摘の通り待機ではなく一定時間の静止です。
いろいろ試してみたんですが、思うように動作しません。

function wait();
_parent.comment=com.slice(0,j);
}

//文字を一文字ずつ表示
i = com.length;
for (j=0;j<i;j++) {
setInterval(wait,1000);
}

としたり、tonbiさんのサイトにあるスクリプトを試したりしてみたのですが、どちらも変数comの中身がまとめて時間が遅れて表示されるだけで、1文字ずつ表示しないのです。
ちなみに全体はこんな感じです。

メインのシーンにMCがあり、そこをクリックすると同じくメインのシーンに貼り付けてあるテキストの表示(comment)が動いていくという仕様なのですが

on (press) {
count+=1;
switch (count) {
case 1:
com="あいうえお";
break;
case 2:
com="かきくけこ";
break;
case 3:
com="さしすせそ";
break;
case 4:
com="たちつてと";
break;
}

//文字を一文字ずつ表示
function Interval(){
_parent.comment=com.slice(0,j);
}
i = com.length;
for (j=0;j<i+1;j++) {
setInterval(Interval, 10000 );
}
}

on(press)の中で全部処理させようとしてるのが間違いなんでしょうか。。。
野中文雄
Åê¹ÆNo.1897
投稿日時: 2003-12-3 22:34
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: ActionScript内で待機したい
1秒後に鳴る目覚まし時計を10個1度にセットすると、どうなるでしょう? 当然1秒後にすべてが一斉に鳴り始めます。
引用:
hirumaさんは書きました:
Condoさま、tonbiさま
ありがとうございました。
ご指摘の通り待機ではなく一定時間の静止です。
いろいろ試してみたんですが、思うように動作しません。

setIntervalは、セットした時間間隔ごとに鳴るタイマーです。ですから、間隔を空けて実行したいなら、ひとつセットすれば足ります。

あと、用が済んだら、それ以上鳴らないようにリセットした方がよいでしょう。
com = "for testing";
j = 0;
function wait() {
	j++;
	trace(comment=com.slice(0, j));
	if (j>=com.length) {  // 用が済んだら
		clearInterval(nID);  // リセット
	}
}

//文字を一文字ずつ表示
i = com.length;
// for (j=0;j<i;j++) {
// setInterval(wait,1000);
nID = setInterval(wait, 1000);  // タイマーはひとつで十分
// }

引用:
どちらも変数comの中身がまとめて時間が遅れて表示されるだけで、1文字ずつ表示しないのです。


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

hiruma
Åê¹ÆNo.1899
投稿日時: 2003-12-3 23:45
半人前
居住地:
投稿: 42
使用環境:
Win2000 + MX pro 2004
MacOS10.2 + MX
Re: ActionScript内で待機したい
Fumioさま

ありがとうございました。
無事動作いたしました。
しかし、うーん。自分自身で納得できていないのでもう少し勉強してみます。
本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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