アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回、簡単な当たり判定作りたいの追加希望です。
振り返りますと現状
sassakunさん回答ANo.3参考のフロー出来上がりました。

今回質問1です。
前回フロー(4)の判定結果を履歴と残し表示させたいのです。
つまり、フロー途中で・・・
             ↓
(4)プログラム判定結果、画面上スベリで当たりor外れ表示
             ↓
(4.1)    履歴 当たり○回 外れ○回 を適当に付近へ表示
             ↓

としたいです。もちろん繰り返しフローですので
外れ及び当たりの履歴は増えていきます。(できたら履歴を0にする
リセット機能もあれば便利です)

質問2
タイムラインでなくダイナミックテキストのみでスクロールさせて
いますがフロー(2)~(4)の最中サウンドは可能なのでしょうか、
つまりボタン“オン”で音楽スタート→(2)・・(4)の判定後表示と同時にサウンド停止。

以上ここまでの(追加部分)フローをまとめます
(1)ボタン“オン”
     ↓
(2)音楽スタート(今回追加)
画面上当たり、ハズレ、当たり、はずれ・・とループ横スクロール 
     ↓
(3)ボタン“オン” 音楽再生中・・
     ↓
(4)プログラム判定結果、画面上スベリで当たりor外れ表示同時に再生 中の音楽ストップ 
 同時に当たり○回 外れ○回 を適当に付近へ表示(今回追加)
     ↓
(5)ボタン“オン”
     ↓
     (2)へ

質問3 
フロー(4)“スベリ”部分速度って調節可能ですか?

質問4
当たりのときにタイムフレームへ移動、画面上演出したいのでが複雑になりかけているので今後の希望にします。

何度もお手数かけています。





          

A 回答 (5件)

突如そのような


 ( > sassakunさん回答ANo.3参考のフロー出来上がりました。
  などなどのような )
ご質問を書かれましても,
他の回答者の方は何を書いているのか意味不明です。
また,
コミニュティ外の方も参考にすることもあるかもしれません。
現に私は ,
Google などの検索から他カテゴリなどのご質問や回答に当たって疑問が解決することが多々あります。
ですから,ご質問の元となるURLを貼っておきます。

「簡単な当たり判定作りたい」
http://oshiete1.goo.ne.jp/qa2618487.html
  ↑教えて!goo  ↓OKWave (同じです)
http://okwave.jp/qa2618487.html



> 質問1
> 判定結果を履歴と残し表示させたいのです。

厳しい言い方かもしれませんが,それくらいは考えてください。
前回の回答を見て,それを使う上で,
判定結果を履歴と残し表示させることすらできなければ,
他の人が作ったもの(本のサンプルなどを含む)を全くそのまま使うことしかできないということになります。
つまり,
教えても結局何もできないということで,質問ではなく完全に作成依頼になりますよ。

と言ってみても,簡単なので,
すでにできていらっしゃるかもしれませんが,
一応ヒントとして,簡単な例を書いておきます。

新規ドキュメントを作成して,
「maru」というインスタンス名のダイナミックテキストを用意します。

フレームに

---------------------------------
// 変数 tokuten(得点) の初期値を設定
tokuten = 0;
---------------------------------

と書き,
そしてボタンを作成して
そのボタンのスクリプトに,

--------------------------------
on (release) {
// 変数 tokuten に +1 する
tokuten++;
// 変数 tokuten を maru に表示
_root.maru.text = tokuten;
}
--------------------------------

と書きます。
それだけのことです。

変数 tokuten は変数名ですから何でも良いです。
自分で勝手に決めるものです。
ActionScript の予約語とかぶらないような,
半角英字から始まる半角英数文字列だと何でも良いです。

 tokuten++;
これは,
 tokuten += 1;
と同じ意味です。また,
 tokuten = tokuten + 1;
これも同じ意味です。
加算後代入演算子(+=) のさらに省略形がインクリメント(++)です。
形が違うだけですから,好きな形を選んでください。

また,
未定義(undefined)の変数の初期値は MX までの場合,勝手に 0 扱いになりますから,
実は,フレームに tokuten = 0; と書かなくても良いと言えば書かなくて良いです。
Flash MX 2004 (Flash player 7)以降はそうは行きませんし,
また 初期値は 0 以外から始まる場合も多々あります。
ですから,汎用的に無難にするために入れているだけの物です。

このような仕組みを組み込んでください。



> 質問2
> 最中サウンドは可能なのでしょうか

当たり,ハズレ とサウンドとは全く無関係なので(干渉するような要素は何もないので),
当然,可能です。
逆に フレーム移動 をさせて,
サウンドを同じタイムラインに置いた場合,音の再生に影響しますよ。
フレーム移動をしていないので,サウンドとは全く無関係になるため,サウンドの挿入が簡単になります。
「Flashゲーム講座&ASサンプル集【サウンドの制御について】」
http://hakuhin.hp.infoseek.co.jp/main/as/sound.h …

これも,このような仕組みを組み込んでください。



> 質問3 
> フロー(4)“スベリ”部分速度って調節可能ですか?

できないこともないと思いますが,
難しいので,現状のものでは "私は" 無理です。
自分でルールを決めてしまえばできるかもしれませんが,
汎用的なものであって,
いかなる速度調節にも対応できるようなものはココに書くことは無理です。

また,ActionScript 以前の問題で,
少し考えればわかることですが,
止まるまでの文字数が違いますよね。
例えば,必ず5文字すべるとか決まっていません。
そこをどうするのですか?
おそらく,自分の中でもはっきりしないと思いますし,
仮にはっきりしても伝えようがないと思います。
伝えるような苦労をするのであれば,自分で思うようにプログラミングした方が簡単だということになります。
私には,
はっきりさせることも,伝えることも,プログラミングすることも無理です。

また,
ダイナミックテキスト内の文字列操作というものは,
最小単位が1文字です。
高速で動く場合は何でも同じですが,低速にするとカクカクになります。
そもそもアニメーションさせているのではなくて,
表示文字を1文字ずつ変えているだけなのですから。

根本的にしくみ全体を変えて,
ムービークリップの座標操作などにしてしまうと,自然な減速になるかもしれません。
しかし,
それを言い出すと,もはや「スベリ」ではなくなります。
「スベリ」はなるべくゲームをしている人にわからないように,
確率を操作する「いかさま」のような仕組みです。
スベリの部分でだんだんゆっくりなどになると,もはやスベリとは言いません。
ルーレットのようなものになってしまいます。




一番良いのは,
"エッセンスだけ" を使っていただくことです。
当然,こういう,広い超おおやけの場所で書いた物ですから,
コピペで使って頂いても,私としては全くさしさわりありません。
しかし,コピペで使うと,コピペでしか作れなくなります。
発想の "エッセンスだけ" のコピーなら,自分自身でカスタマイズがいくらでもできると思います。
上記の参考URLも同じです。
技術と意味と発想をどんどん盗んでください。
そのために,解説やコメント行やサンプルがあるのですから。
一々細かいカスタマイズまでは,作者本人が作るものですし,回答は不可能ですよ。
 

この回答への補足

厳しいご指摘ありがとうございます。
私は今までタイムフレームをちょっとしたスクリプトで動かす程度しか
なかったのでプログラムのみとなるととっつきにくいものがありまして・・簡単なものでもむずいです。
そういうことでしたら、単にお願いするのではなくわからない所を質問
形式でよろしいでしょうか。

今回希望のフローですが・・申し訳ありません少し変更しました。

(1)ボタン“オン”
     ↓
(2)音楽スタート同時に画面上が当たり、ハズレ、とループ横スクロール
     ↓
(3)6秒後自動でストップ判定表示、同時に音楽もストップ ※ただしここでのボタン“オン”は6秒間は無効
     ↓
(4) (3)終了後ボタン“オン”
     ↓
     (2)へ

今回目標は(3)のようにボタンの操作をなくし“当たり”“はずれ”を自動停止させたいです。わたしがいった速度調整は必要ありません。また(3)の停止まで6秒間途中でボタンを押すと(2)へいってしまう為、その間はボタン押下しても無効としたいです。
音楽にかんしてはとりあえず、自分でなんとかいけそうです(でもわからなければ又おねがいするかもしれません)

わたしもなるべくは単に物まねでなく、技術を盗む努力するつもりですが希望としている例題が少ないのですよ・・。今回の件に関しても
今後のアイディアに流用していけると確信しています。
何卒よろしくおねがいします。

補足日時:2006/12/27 02:41
    • good
    • 0

回答No.3のものです


私が記述したASは勉強のためのちょっとした謎解きです
まずは「教えて!goo」の文字列を表示させずに正常に動作するように色々やってみてください

変更部分ですが、その前にNo.3で記述したASは主に下記のような流れです

1.ボタン(回転スタート用の独自関数が適用)を押す
・・・回転スタート用の独自関数は・・・
 横スクロール用の独自関数をsetIntervalで始めさせる
 回転ストップ用の独自関数をボタンに適用する

2.ボタン(回転ストップ用の独自関数が適用)を押す
・・・回転ストップ用の独自関数は・・・
 当たりはずれの抽選を行う
 ボタンを押しても何も起こらないように変更する
 抽選を行ったから回転を止めてOK、というフラグを立たせる

3.抽選を行ったから回転を止めてOKフラグが立っている
・・・横スクロール用の独自関数は・・・
 抽選結果を元にスクロールを止める
 回転スタート用の独自関数をボタンに適用する

// 1に戻る

このような感じです
望みのような内容にするには、この流れを

1.ボタン(回転スタート用の独自関数が適用)を押す
・・・回転スタート用の独自関数は・・・
 横スクロール用の独自関数をsetIntervalで始めさせる
 回転ストップ用の独自関数をsetInterval(6秒設定)で始めさせる
 ボタンを押しても何も起こらないようにする

2.6秒後回転ストップ用の独自関数がアクションを起こす
・・・回転ストップ用の独自関数は・・・
 当たりはずれの抽選を行う
 抽選を行ったから回転を止めてOK、というフラグを立たせる
 intervalを解除する

3.抽選を行ったから回転を止めてOKフラグが立っている
・・・横スクロール用の独自関数は・・・
 抽選結果を元にスクロールを止める
 回転スタート用の独自関数をボタンに適用する

// 1に戻る


このように変更すると可能です
特に新しいFlash用関数・独自関数は不必要で、数行を既に他で使用しているASのような書き方で変更または削除するだけです

コピペを試しただけでは何にもならないので、ご自分でもう少し考え、記述変更を試みてください
    • good
    • 0
この回答へのお礼

ありがとうございます。今回非常に勉強させていただきました。
今回3人のスクリプト全て試しているところです。

しかし私の経験不足で試行速度が遅いですwそのため一旦締めます。
又お目にかかればよろしくお願いたします!

お礼日時:2006/12/29 07:41

#1です。



> (3)6秒後自動でストップ判定表示、同時に音楽もストップ
> ※ただしここでのボタン“オン”は6秒間は無効

○秒後に何かを実行するには setInterval を使うのが一般的です。
ボタンを無効にしたり有効にしたりするには,ボタンの enabled を true にしたり false にしたりして切り替えます。


他の方々から,すばらしい方法の回答があり,
大変恐縮ですが,
私の前回の回答にそれを組み込むのなら次のようになります。

その前に,スタートさせるボタンには,インスタンス名を付けてください。
この説明では 「start_btn 」 というインスタンス名を付けたとしておきます。


フレームに書くスクリプト↓
------------------------------------------
// スクロールする文字列の登録
scrWord = "当たり ハズレ ";
// flag(フラグ)の初期値を設定(3 はストップ状態)
flag = 3;
// スクロールする文字列の配列を作成
scrArr = new Array();
// 配列を1文字ずつの要素に分解
scrArr = scrWord.split("");
// 配列のエレメント数の取得
scrLen = scrArr.length;
//
// --- ★↓以下を追加↓★ ---
// ユーザー定義関数 stopScroll の定義
function stopScroll() {
// 変数 lottery に 0~9 までの整数の乱数を代入
lottery = Math.floor(Math.random()*10);
//
// lottery が 0 であれば
if (lottery == 0) {
// flag の値を 1 にする
_root.flag = 1;
} else {
// それ以外は flag の値を 2 にする
_root.flag = 2;
}
//
// ~この辺でサウンドストップを実行~
//
// timeID のクリア
clearInterval(timeID);
}
//
// ユーザー定義関数 setTimer の定義
function setTimer() {
// 6000ミリ秒後に stopScroll を実行
timeID = setInterval(stopScroll, 6000);
}
// --- ★↑以上を追加↑★ ---
//
// 1フレーム進む時間ごとに毎回実行
this.onEnterFrame = function() {
// もし flag が 0 か 1 か 2 であれば
if (flag == 0 || flag == 1 || flag == 2) {
// judgeBox に配列の前4文字を表示
_root.judgeBox.text = scrArr.join("").substr(0, 4);
// もし flag が 1 で 文字列の最初が "当" になれば
if (flag == 1 && scrArr.join("").substr(0, 1) == "当") {
// flag を 3 に(つまりストップ状態に)する
flag = 3;
//
// --- ★↓以下を追加↓★ ---
// start_btn のボタン機能を有効にする
_root.start_btn.enabled = true;
//
// ~この辺で「当たり」のカウントを1加算~
//
// --- ★↑以上を追加↑★ ---
//
// もし flag が 2 で文字列の最初が "ハ" になれば
} else if (flag == 2 && scrArr.join("").substr(0, 1) == "ハ") {
// flag を 3 に(つまりストップ状態に)する
flag = 3;
//
// --- ★↓以下を追加↓★ ---
// start_btn のボタン機能を有効にする
_root.start_btn.enabled = true;
//
// ~この辺で「ハズレ」のカウントを1加算~
//
// --- ★↑以上を追加↑★ ---
//
}
// 配列の最初のエレメントを削除して最後のエレメントに代入
scrArr[scrLen-1] = scrArr.shift();
}
};
------------------------------------------


ボタン「start_btn 」に書くスクリプト↓
------------------------------------------
on (release) {
// 単に flag を 0 にするだけ
_root.flag = 0;
//
// ~この辺でサウンドスタートを実行~
//
// ユーザー定義関数 setTimer の実行
_root.setTimer();
// そして自分自身のボタン機能を無効にする
_root.start_btn.enabled = false;
}
-------------------------------------------


setInterval の詳細に関しては,
お持ちの Flash のヘルプがわかりやすいと思います。



他の回答者の方のスクリプトを使う場合も,
同様に setInterval や enabled を組み込めばできると思います。

これも,
なるべく内容を理解してください。

この回答への補足

ご回答ありがとうございます。

いろいろ解読してなるほど!と理解してきました。音楽もとりえず
鳴っています
またひとつ疑問がわきでましたのでよろしくおねがいします。
途中フローの・・

(2)音楽スタート同時に画面上が当たり、ハズレ、とループ横スクロール
     ↓
(3)6秒後自動でストップ判定表示、同時に音楽もストップ ※ただしここでのボタン“オン”は6秒間は無効
     ↓
(4) (3)終了後ボタン“オン”
     ↓
     (2)へ

//ボタンスクリプト
on (release) {
_root.flag = 0;

//別フレームのse_00音楽スタート(今回追加)
_root.se_00.start( );

_root.setTimer();
_root.start_btn,enabled = false;
}
としています。
フローの(2)~(3)で6秒間は_root.start_btn,enabled = false;
とtimerのスクリプトで“ボタンオン=無効”となっていますが、音楽だけはボタンオン繰り返すと2重3重に再生してしいます。6秒間は
無効となっているスクリプトであるのになぜ音楽のみそうなってしまうのか不思議です。


(あと、ANo.5 suzukiさんご回答ありがとうございます)

補足日時:2006/12/28 21:43
    • good
    • 0
この回答へのお礼

おかげさまで完成に至りました。
とりあえずまとめます。
先ほどの質問、“音楽だけはボタンオン繰り返すと2重3重に再生してしいますですが_root.start_btn,enabled = false;のbtn,のコロンが.の
間違いでした。
ボタンオンのカウントをボタンスクリプト行へ
{tokuten ++;
_root.maru.text = tokuten;
}

当たり時のカウントをご指摘の行に
if(flag == 3)
{atari++; _root.sikaku.text = atari ; }
追加することで動作確認できました。
スクリプトに関してほぼ初心者のわたしですが一応の理解を得ることが
できうれしい限りです。この場を持ち再度お礼をいたします。

又お目にかかればよろしくおねがいします。(すぐかもしれませんがw)

お礼日時:2006/12/29 07:32

サウンド部分に関しては参考URLが回答されているようなので割愛します


以下のscriptをフレームに記述すれば基本部分はできあがりです
ただsassakunさんの仰るようにコピペだけの問題になってしまうので、
勉強の為に各内容に主だった内容のコメントはつけていません
また、「教えて!goo」というテキストもつけています
各所ヘルプを見ながら理解していき、ご自分用にカスタマイズしてみてください


//scriptここから
//各配置
var mc = this.createEmptyMovieClip("reel", this.getNextHighestDepth());
mc.createTextField("txt", 0, Stage.width/2-100, 50, 200, 50);
mc.createTextField("res1", 1, Stage.width/2-100, 100, 200, 50);
mc.createTextField("res2", 2, Stage.width/2, 100, 200, 50);
var bt = this.createEmptyMovieClip("btn", this.getNextHighestDepth());
bt.createTextField("txt", 0, Stage.width/2-40, 150, 80, 24);
var ttl = this.createEmptyMovieClip("goo", this.getNextHighestDepth());
ttl.createTextField("txt", 0, 0, 0, 100, 24);
mc.onRelease = true;
mc.useHandCursor = false;
var mcfmt = new TextFormat();
var btfmt = new TextFormat();
var ttlfmt = new TextFormat();
mcfmt.size = 40;
btfmt.size = 16;
btfmt.bold = true;
mcfmt.align = btfmt.align="center";
mcfmt.color = btfmt.color=0xffffff;
mc.txt.setNewTextFormat(mcfmt);
bt.txt.setNewTextFormat(btfmt);
mc.txt.background = bt.txt.background=true;
mc.txt.backgroundColor = bt.txt.backgroundColor=0x000000;
bt.txt.text = "スタート";
//初期設定
//サウンドを割り当てるならここらへんに書き込む
oshiete = "教えて!goo";
reelTxt = " 当たり はずれ 当たり";
mc.good = 0;
mc.bad = 0;
txtCnt = 0;
fps = 24;
ttl.txt.text = oshiete;
resultTxtCh();
bt.onRelease = Ron;
//関数定義
function Ron() {
//サウンドスタートはここに書き込む
clearInterval(intervalId);
intervalId = setInterval(Rrot, Math.floor(1000/fps));
this.txt.text = "ストップ";
this.onRelease = Roff;
}
function Roff() {
//サウンドストップはここに書き込む
var rnd = Math.floor(Math.random()*10);
if (rnd == 0) {
res = 0;
mc.good++;
} else {
res = 4;
mc.bad++;
}
if (ttl.txt.text == deer) {
stopFlag = true;
}
this.txt.text = "";
this.onRelease = true;
}
function Rrot() {
txtCnt = txtCnt%8+1;
mc.txt.text = reelTxt.substr(txtCnt-1, 5);
if (stopFlag) {
if (res == 0 && txtCnt>4) {
var ps = txtCnt-4;
clearInterval(intervalId);
intervalId = setInterval(Rrot, Math.floor(1000/fps*ps));
} else if (res == 4 && txtCnt<5) {
var ps = txtCnt;
clearInterval(intervalId);
intervalId = setInterval(Rrot, Math.floor(1000/fps*ps));
}
if (txtCnt-1 == res && deer.length == 7) {
clearInterval(intervalId);
bt.txt.text = "スタート";
bt.onRelease = Ron;
if (ttl._x == 0 && ttl._y == 0) {
stopFlag = false;
}
resultTxtCh();
if (res == 0) {
//当たった時に何か命令したいならここに記述
trace("当たった!");
}
}
}
}
function resultTxtCh() {
deer = ttl.txt.text;
mc.res1.text = "当たり "+mc.good+" 回";
mc.res2.text = "はずれ "+mc.bad+" 回";
}

この回答への補足

ありがとうございます、むずいですw。しかし勉強のために全ての方のスクリプトを試します。その前にすこしだけ変更があったのでよろしいですか。

(1)ボタン“オン”
     ↓
(2)音楽スタート同時に画面上が当たり、ハズレ、とループ横スクロール
     ↓
(3)6秒後自動でストップ判定表示、同時に音楽もストップ ※ただしここでのボタン“オン”は6秒間は無効
     ↓
(4) (3)終了後ボタン“オン”
     ↓
     (2)へ

と(3)の変更しました、申し訳ありませんがよろしくおねがいします。

このようなプログラムは今後の財産となるので非常に貴重です。

補足日時:2006/12/27 03:29
    • good
    • 0
この回答へのお礼

ありがとうございます。今回非常に勉強させていただきました。
今回3人のスクリプト全て試しているところです。
初心者にはむずいですw

しかも今回私の経験不足で試行速度が遅いですwそのため一旦締めます。


又お目にかかればよろしくお願いたします!

お礼日時:2006/12/29 07:42

横スクロールループで特定の位置に止まるように減速するというのは難しいですね


途中で断念しました。

一定速度で減速して止まったところの判定を見る
ではダメなのでしょうか?目押しはダメということですが、
減速速度をランダムで変更させれば目押しということにはならないと思います。

折角作ったので「横スクロールループで特定の位置に止まるように減速」
に挑戦したけど断念した結果できあがった
一定速度で減速し止まった位置のMCで判定する処理のASを載せておきます。

//用意--------------------------------------------------------------------
まず、あたりのMCを用意します。
とりあえず横幅は30ピクセル、高さは適当に作って「あたり」とでも書いて置いてください。
リンケージ名をatari_mcとします。
同様にリンケージ名hazure_mcというはずれMCも作ってください。

次に停止位置を示す▲的ナMCも用意してください。高さ幅は適当で、
リンケージ名をstopline_mcとしてください。

あたりMC、はずれMC、停止位置MCは実行時にattachMovieされます。

スタート/停止に使うボタンも用意してください。
これはステージに配置しインスタンス名はope_btnとしてくささい。

用意はこれだけ、説明は後でいいのでASを貼れば完成です。

ちなみにあたりの確率は1/10ではありません。

//動作説明----------------------------------------------------------------
空のムービークリップを作成して、あたりMCとはずれMCを計10個配置します。
この空MCがループします。ループが途切れないように複数作っています。

あたりMCとはずれMCの中にはtypという変数を作って停止時それをみて判定しています。

停止時の速度speed_downを大きくすれば素早くとまります。

一応後から変えれるように変数を沢山使ってますが
その値を変更して正常に動くかは未確認です。

//AS----------------------------------------------------------------------
//フレームに貼り付けます。

var judge_w = 30;//あたり、はずれMCの幅
var scroll_s = 36;//スクロール速度
var top = 100;//スクロールMCの位置
var speed_down = 1; //停止時の速度
var speed = 0;
//
var start_bln = false; //動いてるときはtrue
var scroll_array:Array = new Array(); //スクロールするMCを管理
var scrolldsp = 0;//スクロールするMCの深度
var wid = 0;

//ステージの幅を超える個数のMCを配置する
while (wid<=Stage.width) {
_root.createEmptyMovieClip("scroll"+scrolldsp, scrolldsp);
scroll_array[scrolldsp] = _root["scroll"+scrolldsp];
AttachMC(scroll_array[scrolldsp]);//関数呼び出し
scroll_array[scrolldsp]._x = wid;
scroll_array[scrolldsp]._y = top;
scroll_array[scrolldsp].idx = scrolldsp;
wid += scroll_array[scrolldsp]._width;
scrolldsp++;
}
//ループが途切れないようにもう一個配置
_root.createEmptyMovieClip("scroll"+scrolldsp, scrolldsp);
scroll_array[scrolldsp] = _root["scroll"+scrolldsp];
AttachMC(scroll_array[scrolldsp]);
scroll_array[scrolldsp]._x = wid;
scroll_array[scrolldsp]._y = top;
scroll_array[scrolldsp].idx = scrolldsp;
wid += scroll_array[scrolldsp]._width;
scrolldsp++;
//
cnt = scroll_array.length-1;
//
mc = _root.attachMovie("stopline_mc", "stopline_mc", 120);
mc._y = scroll_array[0]._y+scroll_array[0]._height/3*2;
mc._x = Stage.width/2;
//
_root.onEnterFrame = function() {
if (_root.start_bln && _root.speed<_root.scroll_s) {
//スクロール時
_root.speed++;
} else if (!_root.start_bln && _root.speed>0) {
//スクロール減速
_root.speed -= speed_down;
if (_root.speed<=0) {
judge_mc = _root.GetJudge();
if (judge_mc.typ == 0) {
trace("あたり");
} else {
trace("はずれ");
}
}
} else if (_root.speed<0) {
//停止
_root.speed = 0;
}
//スクロールMC横のスクロールとループするための処理
for (var i = 0; i<scroll_array.length; i++) {
scroll_array[i]._x -= _root.speed;
if (scroll_array[i]._x+scroll_array[i]._width<=0) {
scroll_array[i]._x = scroll_array[cnt]._x+scroll_array[cnt]._width;
if (i == 0) {
scroll_array[i]._x -= speed;
}
cnt++;
if (cnt>=scroll_array.length) {
cnt = 0;
}
}
}
};

//操作ボタン
_root.ope_btn.onRelease = function() {
_root.start_bln = !_root.start_bln;
};

//スクロール停止時に停止位置MCの範囲にあるMCを取得する関数
function GetJudge():MovieClip {
var stop_mc;
for (var i = 0; i<scroll_array.length; i++) {
for (var k = 0; k<10; k++) {
mc = scroll_array[i]["mc"+k];
x = scroll_array[i]._x+mc._x;
x1 = _root.stopline_mc._x-judge_w/2;
x2 = _root.stopline_mc._x+judge_w/2;
if (x>=x1 && x<=x2) {
stop_mc = mc;
break;//本来なら外側のforも抜けるべきだけど略
}
}
}
return stop_mc;
}
//初期設定MC配置する関数
function AttachMC(target_mc) {
var dsp = 0;
for (i=0; i<10; i++) {
if (i%4 == 0) {
//あたり
mc = target_mc.attachMovie("atari_mc", "mc"+dsp, dsp);
mc.idx = dsp;
mc.typ = 0;
} else {
//はずれ
mc = target_mc.attachMovie("hazure_mc", "mc"+dsp, dsp);
mc.idx = dsp;
mc.typ = 1;
}
mc._x = judge_w*i;
mc._y = 0;
dsp++;
}
}

この回答への補足

ありがとうございます、これもなかなかむずいですw。
少しだけ変更があったのでお願いしてもよろしいですか。

(1)ボタン“オン”
     ↓
(2)音楽スタート同時に画面上が当たり、ハズレ、とループ横スクロール
     ↓
(3)6秒後自動でストップ判定表示、同時に音楽もストップ ※ただしここでのボタン“オン”は6秒間は無効
     ↓
(4) (3)の終了後ボタン“オン”
     ↓
     (2)へ

と(3)の変更しました、申し訳ありませんがよろしくおねがいします。今後いろいろカスタマイズをしてみるつもりです。

補足日時:2006/12/27 03:34
    • good
    • 0
この回答へのお礼

ありがとうございます。今回非常に勉強させていただきました。
今回3人のスクリプト全て試しているところです。

しかし私の経験不足で試行速度が遅いですwそのため一旦締めます。
又お目にかかればよろしくお願いたします!

お礼日時:2006/12/29 07:45

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