フラッシュのASについて

このQ&Aのポイント
  • フラッシュのASを使用してHPを製作しています。現在、ランダムに他のフレームに飛ぶASを実装していますが、全てのフレームに対してランダムに飛ばす方法を知りたいです。
  • 現在、フラッシュのASを使用してHPを製作しています。特定のフレームにランダムに飛ぶASを実装していますが、そのASを全てのフレームに適用させる方法を教えてください。
  • フラッシュのASを使用してHPを製作しています。ランダムに他のフレームに飛ぶASを実装していますが、全てのフレームに対してランダムにジャンプする方法を知りたいです。
回答を見る
  • ベストアンサー

フラッシュのASについて。

宜しくお願いいたします。 当方WINXP,FLASH MXを使用しています。 フラッシュを使用してHPを製作しております。 そのフラッシュコンテンツの中で、 読み込まれた時に一応ランダムに他のフレームに飛ぶように次のようなASを1フレーム目に置いています。 if (random(2) == 1) { gotoAndPlay("m01"); } else { gotoAndPlay("m02"); } 現状はランダムといっても二箇所のどちらかしか飛ばない内容になっています。 例えば現状は"m01"、"m02"、とありますが、その後には"m03""m04"と続くとして、"m01"、"m02"、"m03"、"m04"全てに対してランダムに飛ばすにはどういうASを書いたら良いのでしょうか。 飛び込みの用事なのですが、上のASを作った本人としばらく連絡取れない物ですから。 どうぞ宜しくお願いします。

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

  • ベストアンサー
  • rightegg
  • ベストアンサー率41% (1357/3236)
回答No.1

こんばんは。 ActionScriptを書かれるのならご存知でしょうが、 random関数は、ver5よりMath.randomになりました。 ただこいつは0から1までの間の乱数発生装置なので、こちらで整数にしてやる必要があります。 (数式の説明は省かせて頂きます。でも考えてみればなるほどね、という感じです) Math.floorも使うと便利だと思います。 また条件式の中に関数を入れてしまうよりも、 先に宣言してしまった方が良いのではないかと思います。 つまり、 jump(任意です) = Math.floor(Math.random()*4)+1; これで変数「jump」に1から4までの数字がランダムに発生します。 あとは条件式を整えるだけ。 if (random(2) == 1) はいただけないので、 if (jump == 1)とします。 そして今はelseでつないでいますが、 これをelse ifに変更。 if (jump == 1){ gotoAndPlay("m01"); } else if (jump == 2){ gotoAndPlay("m02"); } else if........以下省略 これで行けるんじゃないですかね。 それにしてもrandomはver4までなんですけど、 もしかして携帯用だったりします? その場合は確かにver4までだと聞いた事がある(作った事は無いです)ので、Math.randomじゃだめかも。 その場合は、 jump = random(4); として、条件を0,1,2,3で取れば行けます。

samejima
質問者

お礼

大変参考になりました。 ありがとうございました。

関連するQ&A

  • Flash MX フレーム ランダムに取得する

    現在、あるコンテンツ製作していて、 画面上に5個画像(ムービークリップ)を表示しています。 そのムービークリップのなかには、グラフィックが10個入っていて、 targetFrame = Math.ceil(Math.random()*10); this.gotoAndPlay(targetFrame); というスクリプトで10個のフレーム中からランダムに表示させています。 (画面上の5個の画像は、その1個ずつが10個(フレーム)の中からランダムに選ばれるので、 5個の中には、同じ画像(同じフレーム)が含まれる場合があります。) 画面上に、あと2個画像(ムービークリップ)を追加し、その2個も、 10個のグラフィック(フレーム)中からランダムに表示させたいのですが、 かならず2個とも同じグラフィック(同じフレーム)を選ばせるにはどうすればよいでしょうか? Flash歴は長いのですが、知識はあまりない馬鹿な私に教えてやってください。

    • ベストアンサー
    • Flash
  • FLASH CS5でnow loadingでランダム再生を読み込みたい

    FLASH CS5でnow loadingでランダム再生を読み込みたい FLASH CS5で10枚の画像(表示されいるのは1枚で、左右に隣の画像が少し見える感じ)があり、その下に右、左のボタンがありを押していくと、画像が切り替わっていくアニメなのですが 開始のフレームをアクセスする度に変わるランダムにしたいです。(開始の画像が入るたびに変わる) そのためにnow loadingですべてを読み込ませてからスタートさせないとなのですが、 1フレーム目に以下のタグを入れました。 このやり方だと、エラーがでます。 //再生停止 stop(); //イベントリスナーを登録 //(毎フレーム時間で実行,実行関数 goRnandom) this.addEventListener(Event.ENTER_FRAME,goRnandom); //関数 goRnandom の定義 function goRnandom(evt:Event):void { //変数 per にロードされたパーセントを取得 var per:Number = this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal * 100; // //もしロードパーセンテージが 100 に達すれば if (per >= 100) { //登録したイベントリスナーを削除 this.removeEventListener(Event.ENTER_FRAME, goRnandom); //変数 rnd_num に 0以上1未満 のランダムな数を代入 var rnd_num:Number = Math.random(); if (rnd_num < 10 / 100) { gotoAndPlay(2); } else if (rnd_num < 10/100) { gotoAndPlay(8); } else if (rnd_num < 10/100) { gotoAndPlay(14); } else if (rnd_num < 10/100) { gotoAndPlay(20); } else if (rnd_num < 10/100) { gotoAndPlay(26); } else if (rnd_num < 10/100) { gotoAndPlay(32); } else if (rnd_num < 10/100) { gotoAndPlay(38); } else if (rnd_num < 10/100) { gotoAndPlay(44); } else if (rnd_num < 10/100) { gotoAndPlay(50); } else { gotoAndPlay(57); } } } どこか間違っている箇所はあるのでしょうか? 教えてください。

    • ベストアンサー
    • Flash
  • Flash IE6でプログレスバーが表示されない

    IE6上で表示させるFlashを作成しているのですが、 最初にプログレスバーを作成し、コンテンツをロードした後でメインの画面を表示させようとしています。 ところがFirefoxではうまく表示されるのですが、 IE6,7で行うと最初のプログレスバー等の画像が一切表示されず、 いきなりメインの画面から始まってしまいます。 コードはAS3で以下のようになっています。 1フレーム目: 何も記述せず 2フレーム目: var percentNo:int; var bInfo:LoaderInfo= root.loaderInfo; percentNo = Math.ceil(bInfo.bytesLoaded /bInfo.bytesTotal * 100); //画面のテキストフィールドに%を表示 percent_text.text = ""+percentNo + "%"; //フレーム遷移 if(percentNo >=100){   gotoAndPlay(3); //メインフレームへ }else{ gotoAndPlay(1); //1フレームからループ } 環境は ・Flash CS3 ・Flash Player9 です。 何か解決方法をご存知の方がいらっしゃればご教授の程をよろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASH AS3.0 ローディングバーについて教えてください。

    AS3.0を勉強しています。 インターネットや、書籍などで調べたのですが、どうしても原因がわからないので、どなたかご教授願います。 基本的な、横に伸びるローディングバーを作成したいと思っています。 タイムラインの1フレーム目に、矩形(H:10px,W100px)を作成し、シンボル化して、インスタンス名を『bar_mc』とつけました。 ASフレームの1フレーム目に、 //ローディングの読み込み var percent:uint = Math.floor(this.loaderInfo.bytesLoaded/this.loaderInfo.bytesTotal*100); //読み込み率に2をかけて、伸び率を2倍に設定 this.bar_mc.scaleX = percent * 2; ASレイヤーの2フレーム目に、 if (percent < 100) { gotoAndPlay(1); }else{ play(); } ASレイヤーの3フレーム目に、 stop(); と記述しました。 一応作動するのですが、問題は、ローディング中に横にのびるように設定した矩形が、設定してある200pxで止まらず、stageの右端いっぱいまでのびてしまうことです。 仮に、 this.bar_mc.scaleX = percent ; と変更しても、やはり右端までのびきります。 これは、何が原因でしょうか? 自分ではどうしてもわからないので、どうか教えてください。 よろしくお願いいたします。

  • 一定処理せずに待つアクションスクリプトを教えて下さい。

    こんにちは、 現在WinでFlash MXを使用してます。 getTimer関数を使用して待ち時間を作ってみたのですが動作しません。 現在作成したプログラムは ◆1フレーム目 startTime = getTimer(); timeOut = 3000; ◆2フレーム目 if( getTimer() > startTime + timeOut ){ gotoAndPlay(3); } else{ gotoAndPlay("lop"); } このようになっており、 ”3フレーム目”にジャンプしてほしいのですが、 ジャンプしません。 何故でしょうか?

    • ベストアンサー
    • Flash
  • FLASHでループ再生を制限するAS

    Flashで音楽に合わせループ再生するアニメーションを作っています。 Web等で調べたActionScriptを使い音楽に合わせた回数で止まるように入力したつもりですが、止まらず、またループ再生してしまいます。 どのような記述をすればよろしいのでしょうか? 複数のレイヤーがあるので、1フレーム目に var loop_cntA:Number = 0; とloop_cntAと変数を宣言して、 最後のフレームに loop_cntA = Number(loop_cntA)+1; if (Number(loop_cntA)<25) { gotoAndPlay(1); } else { stop(); } と入力し24回目までループするように設定したつもりです。 しかし、止まってくれず何度もループしてしまいます。 どのように記述するのが正しいのでしょうか? ご指導お願い致します。

  • ランダムでシーンの移動ができない。

    ランダムでシーンの移動をやりたくて、 http://okwave.jp/kotaeru.php3?q=1691219 を参考にスクリプトを組んだのですが、うまくいきません。 書いたスクリプトは、 rand = Math.floor(Math.random()*6); if (rand == 0) { gotoAndPlay("シーン 7", 1); } else if (rand == 1) { gotoAndPlay("シーン 5", 1); } else if (rand == 2) { gotoAndPlay("シーン 6", 1); } else if (rand == 3) { gotoAndPlay("シーン 4", 1); } else if (rand == 4) { gotoAndPlay("シーン 3", 1); } else if (rand == 5) { gotoAndPlay("シーン 2", 1); } です。 (シーン1の一番最初に書きました。swfが読まれたらすぐにランダムが始まる予定です。。。) 現状、ランダムを全く無視して、作ったシーンの順番でシーンの再生が進んでしまいます。 スクリプトに問題があるのでしょうか。。。? よろしくお願いします。

    • ベストアンサー
    • Flash
  • 【AS3】ムービークリップからステージへアクセスできません

    はじめまして。FlashでAction Script3.0を勉強し始めたばかりの初心者です。 実は、AS3でどうしても不明な部分があり この度問い合わせさせていただいております。 AS2では_rootでステージにあるムービークリップにアクセスできたかと思うのですがAS3では代わりのものはあるのでしょうか。 現在ステージ上にいくつかムービークリップを置いて、 それぞれのムービークリップ最後のタイムラインに、 「root.gotoandPlay("scene1")」というように記述して、 ステージにもどり、そのフレーム名から始めたいのですが(この場合、scene1というステージ上のフレームから再生させたい) 「未定義である可能性のgotoAndPlayメソッドを静的型flash.display:DisplayObjectContainerの参照を使用して呼び出しました」というエラーになってしまいます。 外部クラスなどは使用しておらず、 ライブラリに格納してあるムービークリップをステージに配置し、 初めのムービークリップを再生したら、次のムービークリップを再生、、というふうに順々に表示させていきたいのですが・・ アドバイスをいただけると大変助かります!! よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FlashLite1.1 タイプライター風Flash

    こんにちは。Flash勉強中の者です。 FlashLite1.1で1文字ずつ文字を表示するFlashを作成しました。 1フレーム目(初期化) str="こんにちは"; num=0; 2フレーム目 num++; if (num<=length(str)){ sample=sample add substring(str,num,1); }else{ stop(); } 3フレーム目 gotoAndPlay(2); 3フレーム構成になっているこのFlashですが,なんとか1フレームで収めることはできないでしょうか? Lite1.1ですのでsetIntervalやタイマーが使えなくて,上記の策も苦肉で対応しました。 タイプライターに関する記述はネットにたくさんありますがLite1.1でできたという例を見たことがありません。 みなさんは1.1は避けてらっしゃるんでしょうか。。。

    • ベストアンサー
    • Flash
  • Flash、ボタンが動かない!?

    Flashでコンテンツ制作中です。 ボタンが思うとおりに動きません。 まず、シーン1上に、レイヤー10枚400フレームほどでアニメーションを作っています。 まずは、あるボタンをクリックすると、他のフレームに移動するように作っています(移動はすべてフレームラベルをつけて移動しています)。 移動先はアニメーションなのでシンボルでアニメーションクリップ化しています。 そのアニメーションクリップはいくつかのボタンの集合体です。ボタンをクリックするとまた別のフレームに飛ばしたいのですが、うまく出来ません。 ボタン自体が動いていないわけではありませんでした。 on (release) {getURL("http://www.~~/");}にするとちゃんとページを表示します。 on (release) {gotoAndPlay("main");}とすると移動しません。 on (release) {gotoAndPlay("シーン 1", "main");} でもダメでした。 ラベルのスペル間違えではないとした場合、他に何かダメな理由が考えられることはありますか? よろしくお願いします。

専門家に質問してみよう