重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

作りたい内容ですが、
(1)乱数を出して、表示。
(2)ループで前回と違う乱数を表示。
(3)あとは任意の回数表示させて終了。

【フレーム1】
a = 0;//前回のrandam_aを代入する!これで前の数字を出さないようにする。
aa = 0;//aループの条件スイッチ

do{
randam_a = Math.floor(Math.random()*9) + 1;//ランダムの整数
if(randam_a == a){
aa = 1;//ここで【doループ】抜けれるようにフラグ
} while (aa == 1);
aa = 0;//また【フレーム1】に戻っても【doループ】できるように。

規定回数を表示を満たしてないなら
gotoAndPlay(2);
規定回数の表示を満たしたなら
gotoAndPlay(3);

【フレーム2】
hyouji = randam_a;//ダイナミックテキストに表示。
gotoAndPlay(1);
【フレーム3】
なにもなし。


おおまかに作りましたが
無限ループで抜けれない><
悪いところは条件文って
そこしかないので判るのですが、
どういう表現で、この流れが作れるか
お助けくださいませ。

A 回答 (2件)

見た感じ,


if文の閉じ括弧( } ) もしくは,
do...while文 の閉じ括弧のどちらかが抜けています。

実際にコピペしてみると...,
やはり,シンタックスエラーでパブリッシュできませんよ。
do...while文 や if文 以前に,
パブリッシュできないので,無限ループにも何もならないのですが。
無限ループ以前に,パブリッシュできてしまう点がすんごく疑問です。

} while (aa == 1); の前に } を追加すれば,パブリッシュできました。
(自動インデントを入れていますが。)

-------------------------------------------
a = 0;
//前回のrandam_aを代入する!これで前の数字を出さないようにする。
aa = 0;
//aループの条件スイッチ
do {
randam_a = Math.floor(Math.random()*9)+1;
//ランダムの整数
if (randam_a == a) {
aa = 1;
//ここで【doループ】抜けれるようにフラグ
}
} while (aa == 1);
aa = 0;
//また【フレーム1】に戻っても【doループ】できるように。
// randam_a を trace
trace(randam_a);
-------------------------------------------


アクションパネルの上部には,
左から,
[+] [虫眼鏡] [ライフルの照準] [チェック] [行揃え] [コメント?] [投げ縄]
のようなボタンが並んでいますが,
[チェック(Vみたいなの)] と [行揃え] みたいなボタンをうまく活用してください。

[チェック(Vみたいなの)] みたいなボタンはシンタックスチェックで,構文をチェックしてくれます。
[行揃え] みたいなボタンは,自動でインデントを付けてくれるのでコードが見やすくなります。

その他のボタンも,
みんなすばらしい機能の持ち主たちです。
「スクリプトアシスト」など最たる物です。
活用してあげてください。


でも,上のように,
 } を元から付けてあっても,
確率的には無限ループすとことは絶対にないとは言い切れません。
randam_a が 0 であり続ける場合です。


しかしなんで,パブリッシュできたのでしょう?
それが不思議で不思議で。
「教えて!goo」 か 「OKWave」 に質問してみたいところです。
    • good
    • 0
この回答へのお礼

お手数おかけしましたm(><)m
現在、質問に投げたソースを
randam_aとrandam_b側が欲しかったので
片方のソースを削って、
実際に作りながら、ループ処理をやっていましたー!
かっこが足りないのはコピーミス(汗
コピーする時に変数も質問用に改良していたので
そのサンプルでエラー出ても不思議じゃないです!
ごめんなさいです!

スクリプト編集画面の便利なコマンド教えてもらって
助かりました!
やっとアクションスクリプトの事も
フレームとシーンの違いも理解できてきて、
整理できてきたところです!

たくさんご指導してもらってありがとうございます。
おかげでFlashが楽しいです!

お礼日時:2007/01/25 21:47

#1です。


フレームのループの指定回数でしたか。失礼しました。

フレーム1 に次のように書いて
----------------------------------
// 規定数の設定(5問)
regulation = 5;
// もし変数countが未定義であれば
if (count == undefined) {
// count の初期値を 0 にする
var count = 0;
}
---------------------------------


フレーム2 のスクリプトの最後に
次のように書くと一応できます。
--------------------------------
// count に 1 を加算
count++;
// もし count が regulation に達すれば
if (count == regulation) {
// フレーム3 に行くけど
this.gotoAndPlay(3);
} else {
// それ以外はループ
this.gotoAndPlay(1);
}
--------------------------------

一応できますというのは,
一応規定回数フレーム移動はしますということです。
実際は,フレーム2 に上のようなことを書くと一瞬で フレーム1 や フレーム3 に行ってしまいますから,
フレーム2 に何かが表示されたかされていないかは確認することはできません。

ですから実際には,
フレーム2~フレーム○ まで何かを表示させるようにしておいて,
フレーム○ に上記2番目のスクリプトを,

gotoAndPlay(○+1); 

などに書き換えて,用意する必要があるとは思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!