- ベストアンサー
ASではどうやって記述するのか
初心者です。 簡単なフラッシュを作ろうと思います。 フレーム1に「のび太」 2に「ジャイアン」 3に「スネ夫」 というテキストが配置されています。レイヤーはすべて別々です。 「のび太」を10秒表示させて、「ジャイアン」を20秒、「スネ夫」を1分、という流れにしたいのですが、フレームワーク(?)を使用せずにASで記述するときは、どのようにしたらよいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 一応,フレーム移動を一切使わない場合の ActionScript を書いておきます。 ちなみに,ダイナミックテキスト か テキスト入力 のテキストフィールドの値を変えることだけにしか対応していません。 まず, _root(メインムービーのタイムラインのステージ上) に, 「charaName」という "インスタンス名" のダイナミックテキストを1つだけ用意 してください。 また,文字色はステージの背景色以外にしてください。 その,ダイナミックテキスト が表示されているタイムラインに書くスクリプトです。 -------------------------------------------------- // とりあえずストップ(場合によっては不要) stop(); //*---データ登録---*// // キャラ名の配列を作成(※可変) var charaArr = new Array("のび太", "ジャイアン", "スネ夫"); // キャラを切り替える秒数の配列を作成(※可変) var timeArr = new Array(60, 10, 20); //*---ダイナミックテキストの操作---*// // ダイナミックテキストcharaName の初期値 _root.charaName.text = charaArr[0]; // 変数 i の初期値 var i = 0; // ユーザー定義関数 charaChange の定義 function charaChange() { // i を 1 ずつ加算 i++; // 登録キャラクタ数を越えれば i を 0 に戻す if (i>=charaArr.length) { i = 0; } // setInterval をセット IDchange = setInterval(function () { // charaName に キャラ名を代入 _root.charaName.text = charaArr[i]; // この setInterval をクリアする clearInterval(IDchange); // ユーザー定義関数 charaChange の実行 _root.charaChange(); }, _root.timeArr[i]*1000); } // ユーザー定義関数 charaChange の実行 charaChange(); -------------------------------------------- 「のび太」→10秒後→「ジャイアン」→20秒後→「スネ夫」→60秒後→戻って「のび太」 というのを条件に書いてあります。 『「のび太」が10秒表示される』 という考え方ではなく, 「のび太」の 『10秒後に「ジャイアン」が表示される』という考え方です。 ですから,キャラを切り替える秒数の部分は, // キャラを切り替える秒数の配列を作成(※可変) var timeArr = new Array(10, 20, 60); にはなりません。 「のび太」の10秒後に「ジャイアン」を表示, 「ジャイアン」の20秒後に「スネ夫」を表示, 「スネ夫」の60秒後に「のび太」を表示ですから, // キャラを切り替える秒数の配列を作成(※可変) var timeArr = new Array(60, 10, 20); となります。
その他の回答 (1)
フレームワーク とは フレーム移動のことでしょうか。 フレーム移動を全く使わないより,フレーム移動は使って, ActionScript でフレームを動かすのが汎用的で色々使えると思います。 > フレーム1に「のび太」 > 2に「ジャイアン」 > 3に「スネ夫」 と書かれている状態はそのままで, フレーム1 のスクリプト --------------------------- stop(); IDchange = setInterval(function () { gotoAndStop(2); clearInterval(IDchange); // ↓10秒間 }, 10000); --------------------------- フレーム2 のスクリプト --------------------------- IDchange = setInterval(function () { gotoAndStop(3); clearInterval(IDchange); // ↓20秒間 }, 20000); --------------------------- フレーム3 のスクリプト --------------------------- IDchange = setInterval(function () { gotoAndStop(1); clearInterval(IDchange); // ↓60秒間(1分) }, 60000); --------------------------- という感じです。 これだとテキストが静止テキストであってもダイナミックテキストであっても使えます。 また,文字ではなく実際のキャラクターの絵が描いてあっても通用します。 「外部SWFムービー内のfunctionをロード直後に呼出す」 3. setIntervalアクションを使う http://www.fumiononaka.com/TechNotes/Flash/FN0304001.html _root のタイムラインを使うことに問題があるのでしたら, ムービークリップの中でキャラクターを切り換えれば(フレームを移動させれば)良いのです。 フレーム移動を使うのも効果的な ActionScript の使用法だと思います。