- ベストアンサー
AS初心者のためのMC回転方法
- AS初心者の方向けに、MCをランダムに回転させる方法について教えてください。
- フレームアクションを使用して、MCを一斉に回転させることができる方法を教えてください。
- 回転スピードが一定の条件下で、6個のMCを同時に回転させたいです。具体的な書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんな感じでいかがでしょうか(コピペ可能)↓。 ------------------------------------------------- // 変数 n の初期化 var n = 0; // 変数 count の初期化 var count = 0; // 変数 kakudo の初期値 var kakudo = 0; // // 1フレーム進む時間ごとに毎回実行 _root.onEnterFrame = function() { // 変数 count に 1 を加算 count++; // もし 変数 count が 70 で割り切れたら(「ときどき」) if (count%70 == 0) { // n に 1~6 のうちの整数の乱数を代入 n = Math.floor(Math.random()*6)+1; } // もし 変数 kakudo が 360 以下で n が 0 以外であれば if (kakudo<360 && n != 0) { // kakudo に 10 ずつ加算(「回転スピード」) kakudo += 10; } else { // kakudo が 360 を越えたら kakudo を 0 にする kakudo = 0; // そして n も 0 にする n = 0; } // // 実際に face?_mc を kakudo に合わせて回転 _root["face"+n+"_mc"]._rotation = kakudo; }; --------------------------------------------------- 説明は, // の付いたコメント行に書いてある通りです。 あえて説明を付け足すとすれば, _root["face"+n+"_mc"]._rotation = kakudo; で出てくる, [ ] は,配列アクセス演算子です。 ドット演算子と配列アクセス演算子 http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html ※ 「回転」の意味を取り違えていたらすみません。 「回転」の意味がいまひとつわからなかったもので...。
その他の回答 (1)
#1です。 > ちょっと問題発生+質問があります。 こんな感じではいかがでしょうか↓。 ------------------------------------------ // スピードの設定 ※可変 var spd = 10; // ときどきの設定(ミリ秒) ※可変 var tokidoki = 1500; // // ユーザ定義関数 selectMC の定義 function selectMC() { // n に 1~6 のうちの整数の乱数を代入 n = Math.floor(Math.random()*6)+1; // face?_mc の flag を 1 にする _root["face"+n+"_mc"].flag = 1; } // ときどきユーザ定義関数 selectMC を実行 myID = setInterval(selectMC, tokidoki); // // 各ムービークリップの変数と動作定義 for (i=1; i<=6; i++) { // 変数 flag と kakudo の初期化 _root["face"+i+"_mc"].flag = 0; _root["face"+i+"_mc"].kakudo = 0; //1フレーム進む時間ごとに毎回実行 _root["face"+i+"_mc"].onEnterFrame = function() { // このMCの kakudo が 360 未満で flag が 1 のとき if (this.kakudo<360 && this.flag == 1) { // kakudo に spd ずつ加算 this.kakudo += _root.spd; } else { // kakudo が 360 を越えたら kakudo を 0 にする this.kakudo = 0; // そして flag も 0 にする this.flag = 0; } // 実際に 自分自身を kakudo に合わせて回転 this._rotation = this.kakudo; }; } --------------------------------------- // ときどきユーザ定義関数 selectMC を実行 myID = setInterval(selectMC, tokidoki); この setInterval に関しては, 複合的に解説されているサイトが多く, あまり良いサイトがみつかりません。 もし不明でしたら,ヘルプ を参考にしてみてください。
お礼
お早い回答ありがとうございます。 意図したとおりにできました! nを設定することは気付きませんでした。 が、ちょっと問題発生+質問があります。 ----------------------------- count%70をcount%20にすると 回転しているMCが途中でストップして 別のMCが回転し始めます。 これは360度1回転する前にcount%20==0がtrueになり nがリセットされるからですよね? そこで あるMCが回転している途中でcount%=20がtrueになっても 「回転をストップさせず最後まで回転させ、 かつ別のMCは独自に回転し始める」 となると、まったく別のASになるのですか?