• ベストアンサー

ASではどうやって記述するのか

初心者です。 簡単なフラッシュを作ろうと思います。 フレーム1に「のび太」 2に「ジャイアン」 3に「スネ夫」 というテキストが配置されています。レイヤーはすべて別々です。 「のび太」を10秒表示させて、「ジャイアン」を20秒、「スネ夫」を1分、という流れにしたいのですが、フレームワーク(?)を使用せずにASで記述するときは、どのようにしたらよいのでしょうか。

  • Flash
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.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)

noname#35109
noname#35109
回答No.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 の使用法だと思います。

関連するQ&A

  • 7秒後にフレーム5へ移動してムービークリップを再生

    はじめまして。 FLASH初心者です。 レイヤー1~5の5フレームごとにムービークリップを配置しています。 レイヤー1の1フレーム目に配置してあるムービークリップが再生されて、7秒後にレイヤー2の5フレーム目に配置してあるムービークリップを再生し、(レイヤー3~5も同様に…)レイヤー5に配置してあるムービークリップの再生が終わったら、また7秒後にレイヤー1のムービークリップが再生される…といったように繰り返すにはどのようなActionScriptにすればよいのでしょう? 色々、試行錯誤したのですがうまくいきません。 どなたか教えて頂けませんか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ボタンインスタンスにスクリプトを記述するやり方

    flash CS3 シーン1をループさせないで止めたいので「stop();」が上から2番目のレイヤーの1459行目のキーフレーム(最後のフレーム)に入っていて、一番上のレイヤー(1459行目の最後のフレーム)にボタンのインスタンスを配置して「もう一度みる」をクリックすると最初からFlashが見れるようにしたいと考えています。 この場合のアクションスクリプトの記述の仕方を教えてください。 使うスクリプトは on (press) { getURL("http://www.******/"); } でいいんですよね? よろしくお願い致します。

    • ベストアンサー
    • Flash
  • テキストボックスに表示される内容を印刷したい(pirnt())

    レイヤー1に背景のオブジェクト、レイヤー2にテキストボックスが複数個あるswfです。 フレームは十数フレームあり、レイヤー3に配置した「印刷」ボタンに on (press) { print("_root", "bmax"); } と記述し、印刷したいフレームに「#p」と入れることで、希望のフレームページのみの印刷はできました。 しかし、レイヤー2に配置したテキストボックスの内容が印刷されません。 テキストボックスは、テキスト入力、ダイナミックのテキスト両方で、動的な内容です。 (静止テキストは印刷されています) 手持ちのスクリプトリファレンスを読んで設定を変えてみたりはしたのですが、上手くいきませんでした。 よろしくお願いします。 Flash MX Version6/WinXP

    • ベストアンサー
    • Flash
  • ドラえもんのしずかちゃんの家は

    ドラえもんに出てくるしずかちゃんは、実はお金持ちの家のお嬢さんなんでしょうか。 というのが、ドラえもんの舞台は東京ですが、しずかちゃんの家って庭付きで結構広い家ですよね。 のび太の家やジャイアンの家も庭付きですが、あまり広い庭ではないですよね。心なしかのび太やジャイアンの家よりきれいな家に住んでいるような気もします。 また、スネ夫が塾に通っている事を除けば、習い事をしているのもしずかちゃんだけですよね。 はっきりお金持ちという記述は見たことがないのですが、もしかしてスネ夫に匹敵するお金持ちの家のお嬢さんのように思えます。 全冊読んだわけではないのですが、どこかにしずかちゃんがお金持ちだという記述や、しずかちゃんのパパの職業をかいたところがあるでしょうか。

  • フェリシモトップのようなアニメーション

    Flash初心者です。 現在、通販会社「フェリシモ」のトップFlashのような、ボタンに触れるとはじめ表示された内容が変わり、またボタンに触れると内容が変わって停止するようなアニメーションを作りたいと思いまして↓ http://www.felissimo.co.jp/ …簡易ですが徐々にできてきました。私は、ボタンのムービーを先に作って一番上のレイヤーに配置し、各内容のムービーもその下にレイヤーで重ね、すべてフレーム1コマ目に配置する方法をはじめ試していたのですが、10枚以上レイヤーを重ねるころにうまくいかなくなりました。 そこでレイヤーをボタンのレイヤーと各ムービーのレイヤー二つだけにし、ムービーのレイヤーに、1フレームにつきムービーを1つずつ配置して、ボタンに触れるとそのフレームにとんで、ムービーが再生される方法にしようとしたのですが、スクリプトに不慣れなもので、全くわかりません。 どなたか、良い解決策をご存知でしたらぜひよろしくお願いします。

  • ASファイルについて

    関数などをまとめてasファイルにして読み込みたいとかんがえているのですが、可能なのでしょうか? たとえば レイヤー2にあるボタンオブジェクト"btn"をクリックすると レイヤー1で#include "function.as"としたなかの function hoge() { gotoAndStop(5); } とうい関数を実行したいっていうふうに考えいます。 btn.on(press) = hoge(); やってはみたのですが、Flash初心者でどうもうまくいきません。 どうかご教授ください。 よろしくお願いします。

  • Flash AS3.0 初歩的な質問

    現在AS3.0を勉強中です。 基本中の基本だと思いますがパスが上手く通っていないようなので ご教授願いたく。 1.ステージ上にテキストボックス(ダイナミックテキスト)を配置しインスタンス名を「hako」としています。 2.rootに以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { hako.text=String(stage.mouseX); } ------------------------------------------------- ここまでは問題なく動作しています。 2をrootでは無く任意のムービークリップから処理させるべく・・・ 3.「abc」というインスタンス名のムービークリックを作成しステージに配置。この1フレーム目に以下のスクリプトを記述 ------------------------------------------------- addEventListener(Event.ENTER_FRAME,syori); function syori(eventObject:Event):void { parent.hako.text=String(stage.mouseX); } ------------------------------------------------- ※この際、2でrootに記述したスクリプトは消しています。 これで動くと思ったのですがエラーがでます。(ToT;) 「parent.hako.text」の部分を「root.hako.text」としてもエラーがでます。「_parent」も「_root」も駄目です。(「_」付はAS2.0までですよね?) 今回はダイナミックテキストは使った例ですが、 単純にムービークリップをステージに配置して、その座標を指定するような処理でも、 他のムービークリップから別のムービークリップを参照する方法が解りません(汗) どうすればよいでしょうか? AS2.0までは上記のような形でパスが通ったと思うのですが・・・

  • AS3.0 ダイナミックテキストの変数について

    現在AS3.0で開発を行っています。 AS3.0は初心者です。 テキストツールを使用し、ステージ上に描画したダイナミックテキストの変数はどのように指定すればいいのでしょうか? AS2.0ではプロパティタブに「変数」の記述欄があり、そこに記述していたのですが、AS3.0は記述できなくなっていて悩んでいます。 ご教授頂けると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS3.0 gotoAndStopを使いたい

    最近ASを始めた初心者です。 Flash AS3.0で画面遷移(フレーム移動)をカスタムクラスを用いて行いたいのですがうまくいきません。どうすればよいのかどなたか解る方教えてもらえないでしょうか。 よろしくお願いします。 flaファイル _______________________________________________________________________________ import Frame; stop(); //Aは移動するフレーム名 //aaaはボタンの名前 var Obj1:Frame = new Frame(aaa,"A"); _______________________________________________________________________________ asファイル _______________________________________________________________________________ package{ import flash.display.*; import flash.events.*; public class Frame{ var my_btn:SimpleButton; var my_Frame:String; public function Frame(btn:SimpleButton, Fr:String){ my_btn = btn; my_Frame = Fr; my_btn.addEventListener(MouseEvent.CLICK,go); } public function go(event:MouseEvent):void{ gotoAndStop(my_Frame); } } } ____________________________________________________________________________________

    • ベストアンサー
    • Flash
  • ランダムなフレームに飛ばしてループさせたい

    フラッシュ初心者です。 過去の質問を拝見したのですが、それを利用しても 思うようにいかず困っているので質問をさせて下さい。 制作中のページにバナー広告を貼ろうと思っています。 そのバナーは5枚あり、1~4枚までは4秒、5枚目だけを 6秒表示させたく、かつ、それをいつでもランダムな順番で表示させたいと思っています。 一巡してもまた違う順番で、そのページが表示されている限り、回っていて欲しいのですが。。。 こちらの方のを利用させてもらったのですが (http://oshiete1.goo.ne.jp/kotaeru.php3?q=2225220)表示させる秒数を異なるようにしたいためか、うまくいきません。 シーン1のレイヤー1の1フレーム目に 上記で書かれているものを書き、 シーン1のレイヤー2・2から3フレームにボタン1、 シーン1のレイヤー2・4から5フレームにボタン2、 (同じくボタン4まで続き)、 シーン1のレイヤー2の10から14フレーム目にボタン5を 配置しています。 (0,5fpsにしています) ボタンにはそれぞれリンクのスクリプトをつけています。 全部秒数を同じにする動きはうまくいったのですが、 1枚だけ異なるようにする点でてこずっています。 本当に初心者で申し訳ありません。 どなたか、教えていただけないでしょうか、 宜しくお願い致します。

専門家に質問してみよう