同じムービークリップのランダム再生方法と連続再生確率の下げ方

このQ&Aのポイント
  • Flash CS6でAS3を使用して、同じムービークリップが連続で再生されないようにランダム再生する方法を教えてください。
  • また、同じムービークリップが連続で再生される確率を下げる方法も知りたいです。
  • 具体的には、3つのムービークリップ(A、B、C)があり、ランダムに再生されるようにしたいです。
回答を見る
  • ベストアンサー

同じMCが連続で再生されないようにランダム再生

Flash CS6 でAS3を使っています。 質問ですが、同じムービークリップが連続で再生されないようにランダム再生を続けるにはどうすればよいでしょうか? 例えば  mcA、mcB、mcCと3つのムービークリップがあるとして 最初にmcAが再生されたら次はmcBかmcCが再生されるようにし、そこでmcBが再生されたら次はmcAかmcCが再生されるようにし、そこでmcCが再生されれば次はmcAかmcBが再生されるようにする、といった具合にランダムでムービークリップの連続再生をしたいのです。 それと同じムービークリップが連続で再生される確率を下げてランダム再生を続ける方法はありませんでしょうか? 例えば最初の質問と同じように mcA、mcB、mcCと3つのムービークリップがあるとして 最初にmcAが再生されたら次はmcAが連続で再生される確率を下げ、mcAかmcBかmcCが再生されるようにし(確率でいうと、次はmcAは10%、mcBとmcCは45%の確率で再生されるようにする、といった感じです。)、そこでmcBが再生されたら次はmcBが連続で再生される確率を下げ、mcAかmcBかmcCが再生されるようにするといった具合に連続再生をしたいのです。 質問は以上の2つです。宜しくお願いします。

  • Flash
  • 回答数3
  • ありがとう数14

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

重複を無くすとか,割合を操作をする時点で, 「厳密な意味でのランダム」ではなくなってしまいますが それはそれとして以下を続けます。 ご質問本題に関してですが ご質問の【前半】と【後半】とでは 全く違う方法について質問されていると思います。 【前半】連続で再生されないようにランダム再生を続ける方法 【後半】再生させるMCの確率を変動させる方法 . ◎【前半】の方法について これについては, 「3つのMC再生を1クール」として その「1クール」を済ませる度に 「3つのMCの再生順をランダムシャッフルする」 という方向で良いのではないかと思います。 ただし 「前の1クール」の最後のMCが 「次の1クール」の最初にならないようにする。 という内容のスクリプトを加えます。 【例】 「mcB,mcA,mcC」←ランダムシャッフルした1クール目 「mcB,mcC,mcA」←mcCが先頭に来ないようにシャッフル 「mcC,mcB,mcA」←mcAが先頭に来ないようにシャッフル 具体例ですが まず,メインのタイムライン の フレーム1 に 内部が複数フレームある,mcA,mcB,mcC という3つの MC があるものとします。 ※参考【添付図】↓ その場合の メインのタイムライン の フレーム1 に書くスクリプト例です。 //------------------------ //MCの参照を登録する配列「mc_arr」を用意 var mc_arr:Array = [mcA,mcB,mcC]; //配列「mc_arr」に登録したMC内の再生停止 for (var i:int = 0; i < mc_arr.length; i++) { mc_arr[i].stop(); } //カウンタを用意 var cnt:int = 0; //配列「mc_arr」の要素数分ループ for (i = 0; i < mc_arr.length; i++) { //配列「mc_arr」の要素をランダムシャッフル mc_arr.push(mc_arr.splice(int(Math.random()*(mc_arr.length-i)),1)[0]); } //最初のMC内を再生開始 mc_arr[cnt].play(); //毎フレーム 関数 watchMC を実行 addEventListener(Event.ENTER_FRAME,watchMC); //関数 watchMC の定義 function watchMC(e:Event):void { //再生中のMC内が最終フレームになれば if (mc_arr[cnt].currentFrame == mc_arr[cnt].totalFrames) { //再生中のMC内をフレーム1で停止 mc_arr[cnt].gotoAndStop(1); //カウンタに 1 を加算するか 0 に戻す cnt = (cnt < mc_arr.length-1)? cnt+1:0; //カウンタが 0 に戻れば if (cnt == 0) { //再生されていたMCを一時記録 var tmp_mc:MovieClip = mc_arr[mc_arr.length - 1]; //配列「mc_arr」の要素数分ループ for (var i:int = 0; i < mc_arr.length; i++) { //配列「mc_arr」の要素をランダムシャッフル mc_arr.push(mc_arr.splice(int(Math.random()*(mc_arr.length-i)),1)[0]); } //mc_arr[0] が 一時記録された MC と同じであれば if (mc_arr[0] == tmp_mc) { //mc_arr[0] を ランダムな後の要素に挿入 mc_arr.splice(int(Math.random()*(mc_arr.length))+1,0,mc_arr.shift()); } } //次のMC内の再生開始 mc_arr[cnt].play(); } } //------------------------ 上記スクリプトの 『配列「mc_arr」の要素をランダムシャッフルする』 の部分については,書き方こそ全く違っていますが 根底の考え方は次のページと全く同じです。 「FN0212003-配列を偏りなくランダムに並替える」 http://www.fumiononaka.com/TechNotes/Flash/FN0212003.html . ◎【後半】の方法について 用意するものや状況は【前半】と同じで 文字数制限もあるためスクリプトのみ書きます↓。 //------------------------ //MCの参照を登録する配列「mc_arr」を用意 var mc_arr:Array = [mcA,mcB,mcC]; //配列「mc_arr」に登録したMC内の再生停止 for (var i:int = 0; i < mc_arr.length; i++) { mc_arr[i].stop(); } //ランダムな 0~「mc_arr」最終要素番号 の数を得る var rnd:int = int(Math.random()*(mc_arr.length)); //その要素を配列の先頭要素に移動 mc_arr.unshift(mc_arr.splice(rnd,1)[0]); //「mc_arr」の最初のMC内の再生開始 mc_arr[0].play(); //毎フレーム 関数 watchMC を実行 addEventListener(Event.ENTER_FRAME,watchMC); //関数 watchMC の定義 function watchMC(e:Event):void { //再生中のMC内が最終フレームになれば if (mc_arr[0].currentFrame == mc_arr[0].totalFrames) { //再生中のMC内をフレーム1で停止 mc_arr[0].gotoAndStop(1); //0~1未満の小数を得る var rnd:Number = Math.random(); //rnd の値が 0.1 未満(確率10%)であれば if (rnd < 0.1) { //「mc_arr」の最初のMC内の再生開始 mc_arr[0].play(); //それ以外は } else { //ランダムな 1~「mc_arr」最終要素番号 の数を得る rnd = 1+int(Math.random()*(mc_arr.length-1)); //その要素を配列の先頭要素に移動 mc_arr.unshift(mc_arr.splice(rnd,1)[0]); //次のMC内の再生開始 mc_arr[0].play(); } } } //------------------------

Fawkes
質問者

お礼

御回答ありがとうございます。以前教えていただいたムービークリップを特定の組み合わせでランダム再生するスクリプトは今も使わせてもらっています。今回のスクリプトも問題なく動きました。ありがとうございました。確かに二番目のスクリプトはランダム再生というより確率変動させて再生する、ですね。 ただスクリプトを見ていてどういう働きをしているのか分からない箇所があったので質問させてください。 最初のスクリプトのシャッフル部分のここと //配列「mc_arr」の要素をランダムシャッフル mc_arr.push(mc_arr.splice(int(Math.random()*(mc_arr.length-i)),1)[0]); 最後のスクリプトのここなんですが //その要素を配列の先頭要素に移動 mc_arr.unshift(mc_arr.splice(rnd,1)[0]); この[0]はどういう働きをしているのでしょうか?push、unshiftに使っているのでしょうか?

その他の回答 (2)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

#1&#2です。 > なぜstrinオブジェクトgが > StringとObjectでtureと判定されてしまうのでしょうか? それは単純に, 変数 a が Object であり,なおかつ String だからでしょう。 ◎参考:ヘルプの「String」より  ~引用~ > String > パッケージ トップレベル > クラス public final class String > 継承 String→Object その他の例も参考まで。 ◎参考:ヘルプの「Array」より  ~引用~ > Array > パッケージ トップレベル > クラス public dynamic class Array > 継承 Array→Object ◎参考:ヘルプの「MovieClip」より  ~引用~ > MovieClip > パッケージ flash.display > クラス public dynamic class MovieClip > 継承 MovieClip→Sprite→DisplayObjectContainer→ > InteractiveObject→DisplayObject→EventDispatcher→Object String オブジェクトも Array オブジェクトも MovieClip オブジェクトも これら3種のオブジェクトは 全て Object クラスを継承しているオブジェクトです。 ですから,どれも Object です。 【喩え1】 人間 は ホニュウ類ですか? → Yes.(true) 人間 は 生物ですか? → Yes.(true) 【喩え2】 鉛筆は 筆記用具ですか? → Yes.(true) 鉛筆は 文房具ですか? → Yes.(true) 鉛筆は 物体ですか? → Yes.(true) 次の文↓は間違っていますよね? 「人間は,ホニュウ類であるが,生物ではない。」 「鉛筆は,筆記用具ではないが,物体である。」 これ↓が正解です。 「人間は,ホニュウ類であるし,生物でもある。」 「鉛筆は,筆記用具である上に,物体でもある。」 ついでに ActionScript や JavaScript など普通のオブジェクト指向言語では Function(関数/メソッド) も Object です。 さらに ActionScript の場合は, BlurFilter(ぼかし)やDropShadowFilter(ドロップシャドウ)のようなフィルターも Object ですまた Tween など「プロパティの変化」さえも Object として扱うことができます。 。 さらに さらに ActionScript 3.0 では Event(例:マウスイベントやキーボードイベントなど) までもが Object です。 ◎参考【添付図】↓ 人間は,ホニュウ類であり,セキツイ動物であり,動物であり,物体である。

Fawkes
質問者

お礼

なるほど。詳細な解説ありがとうございました。勉強になりました。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 > この[0]はどういう働きをしているのでしょうか? その[0]は「配列の 0番 要素」を取り出すという働きをしています。 そもそも,その[0]を削除するとエラーが出ませんか? [お礼]で書かれている2つのスクリプトですが どちらとも Array クラスの splice() メソッドを使用していますよね。 この splice() メソッドの戻り値(=返り値)は「配列」なのです。  ↓これが「配列」 戻り値 = 配列.splice(抜き出す要素の開始番号,抜き出す要素数); ◎参考:ヘルプの「splice () メソッド」より  ~引用~ > AS3 function > splice(startIndex:int, deleteCount:uint, ... values):Array > …中略… > 戻り値 > Array - 元の配列から削除されたエレメントを含む配列です。 今回使った2つのスクリプトの場合, 抜き出す要素数は 1 つで戻り値は 1 つですから, その戻り値は,なんとなくの雰囲気で見れば, mcA または mcB または mcC のうちのいずれかになるように思えます。 しかし実は違っていて mcA または mcB または mcC のうちのいずれかを1つの要素とする「配列」が戻り値として返ってくるのです。 実際に欲しいのは「配列」ではなくて その中身の「要素」である「ムービークリップ」です。 それで その配列の 0番 要素であるムービークリップを取り出すために [0] を付けているわけです。 新規ドキュメントを作成し, メインのタイムラインのフレーム1に 次のようなスクリプトを書いて(コピペして), 「制御」→「ムービープレビュー」→「プレビュー」してみると, 理解が深まるかもしれません。 //--------------------------------------- //配列["あ","い","う"] の 1番 要素を抜き出し //変数 a に代入 var a = ["あ","い","う"].splice(1,1); //変数 a を出力 trace("a は何? →" + a); //変数 a のタイプを出力 trace("a のタイプは? →" + typeof(a)); //配列["あ","い","う"] の 1番 要素の 0番 要素を抜き出し //変数 b に代入 var b = ["あ","い","う"].splice(1,1)[0]; //変数 b を出力 trace("b は何? →" + b); //変数 a のタイプを出力 trace("b のタイプは? →" + typeof(b)); //--------------------------------------- ムービープレビューでの 上記スクリプト実行時の出力結果↓ --------------- a は何? →い a のタイプは? →object b は何? →い b のタイプは? →string --------------- trace() には, 数値 や 配列 などを自動的に文字列に変換するプログラムが内蔵されているため 便利で使いやすいのですが, その反面,単なる trace(変数名) では, 出力されたものが何であるのかわかりにくいことがあります。 そこで typeof 演算子 を使います。 すると,出力される変数のタイプがある程度わかるようになります。 ◎参考:ヘルプの「typeof 演算子」より  ~引用~ > 式の型 結果 > Array object > Boolean boolean > Function function > int number > Number number > Object object > String string > uint number > XML xml > XMLList xml 上記スクリプトの出力結果で 「a のタイプは? →object」 となりますが もっと細かく言えば a は Array(配列) なのです。 つまり var a = ["あ","い","う"].splice(1,1); では, 配列["あ","い","う"]の 1番 要素1つのみのを要素とする配列 ["い"] が, 変数 a に代入されるわけです。 一方 var b = ["あ","い","う"].splice(1,1)[0]; では, 配列["あ","い","う"]の 1番 要素1つのみのを要素とする配列 ["い"] の さらに 0番 要素である "い" が, 変数 b に代入されるわけです。 説明が長くなって 余計にややこしくなったかもしれませんが とにかく そういう意味の(配列の最初の要素を取り出す意味の) [0] です。 . 【重要ではない補足】========= もし最初の mc_arr.push(mc_arr.splice(int(Math.random()*(mc_arr.length-i)),1)[0]); の方で [0] を使いたくない場合は 次のようにしても良いかもしれません。 mc_arr = mc_arr.concat(mc_arr.splice(int(Math.random()*(mc_arr.length-i)),1)); ○.push(△) は, 配列 ○ の末尾に △ という要素を付け足す(押し込む) という意味になります。 □ = ○.concat(△) は 配列 ○ と 配列 △ とを連結して配列 □ を作成する という意味になります。 push() を使った現状でさえややこしいですが, concat() を使うとさらにややこしくなりますよね...。       ◎参考【イメージ図】↓ 「家」を「配列」,「棒人間」を「要素」だと思って見てください。

Fawkes
質問者

お礼

非常にわかりやすい解説でした。ありがとうございます。教えて頂いたスクリプトを分割して調べている時にエラーがでなかったのですが、あのときは配列を配列の中に入れている形になっていたようです。 それと最初の質問とは外れていってしまいますがもう一つだけ質問をさせてください。教えて頂いたtypeofを使ってみたんですが、このスクリプトを実行すると var a:String ="aaaa"; trace(typeof(a)); trace(a is String); trace(a is Object); 結果が string true true となります。なぜstrinオブジェクトgがStringとObjectでtureと判定されてしまうのでしょうか?

関連するQ&A

  • ムービークリップを特定の組み合わせでランダム再生

    Adobe Flash Pro CS6 でAction Script 3を使っています。 今現在複数あるループムービーを特定の組み合わせでランダム再生する方法を考えています。 使用するムービークリップの数は全部で5つです。 mcA,mcB,mcC,mcD,mcEと5つあります。クリップの再生時間はmcDのみが20フレームでほかはすべて10フレームです。これらのムービークリップをある程度のランダム性を持たせて特定の順番で再生したいのです。特定の順番は以下のとおりです。 mcA - mcB mcA - mcB - mcB mcC - mcD - mcE mcC - mcD - mcD - mcE mcC - mcD - mcD - mcD - mcE この四通りの再生方法でムービークリップをランダムで再生し続けたいのです。 それぞれのクリップはループになっているのでmcBからmcA or mcC、mcEからmcA or mcCに繋がってもシームレスに再生し続けられる感じになっています。 どういった方法を用いるのが最善でしょうか? 今現在一つのレイヤーに (mcA - mcB)( mcA - mcB - mcB )(mcC - mcD - mcE)(mcC - mcD - mcD - mcE)(mcC - mcD - mcD - mcD - mcE) と言った感じにすべてのムービークリップを再生する順番に配置して、それぞれの区切りでフレームラベルを用意して、配列にフレームラベルをすべて入れて、その配列とMath.randomを組み合わせてフレームラベルをランダムで選び、再生位置を飛ばして再生し続けていますが、これだとレイヤーの管理がしにくいのでいまいちしっくりきません。

    • ベストアンサー
    • Flash
  • Fpsを増減させても一定のスピードで再生する方法

    Adobe Flash Pro CS6 でAS3を使っています。 質問はタイトルの通りなんですが例えばルートにフラッシュの再生速度を速くしたり遅くしたりするFps変更スイッチと mcA,mcBと2つのムービークリップがあるとして mcAはFPS変更の影響をうけるようにし、逆にmcBはFps変更の影響をうけないように2つのムービークリップを同時に再生をしたいのです。そのときmcA,mcB両方とも1フレームも欠けることなく再生したいです。 自分で試してみた方法は、mcBの中の全フレームに stop();を記述しルートに function mc_Play():void { mcB.play(); } setInterval(mc_Play,200); と記述して再生スピードを強制的に固定する方法を試したのですが、Fps変更ボタンを押してFps変更を行うときに、setIntervalで制御しきれていないのかもしれませんが、微妙にmcBの再生速度が遅くなったり速くなったりと変化してしまいます。何か他に良い方法はありませんでしょうか?例ではムービークリップの数を少なくしていますが実際のプロジェクトファイルでは、ムービークリップの数は20以上ありそれぞれが10フレーム以上の長さのアニメーションファイルを持っています。その20以上あるムービークリップの数個だけFPS増減の影響をうけないように再生速度を固定したいのです。

  • ムービークリップをボタン操作でランダムに再生

    Adobe Flash Pro CS6 でAction Script 3を使っております。 現在、異なるムービークリップを一つのボタンの操作でランダムに再生する方法を検討しております。 使用するムービークリップの数は全部で8つでございます。 これらはAfter effect で製作後adobe Media EncoderにてFLVに変換しております。 これらを同じものを連続で再生しないように、 そして一つのボタンをクリックするたびにムービークリップの再生が始まりますが、押さない限りはムービークリップの最初の画像で止まっているようにしたいのです。 例えば、ムービークリップの先頭に丸があって、それが徐々に四角になるムービーがあるとしますと、そこにあるボタンをクリックしない限りは写っているのは丸のままですが、 クリックをしたら四角に変化し、 そして次のムービークリップへ移動し、 そこでもまた最初と同じようにボタンをクリックしない限り始まらないというものにしたい次第でございます。 この場合、どういった方法を用いるのが最適でしょうか? お答え頂ければ幸いにございます。

  • 2つのMC(ドラッグで移動可能)から等しい距離にMCを配置したい

    ドラッグで移動可能な二つのムービークリップMCAとMCBから等しい距離の位置に三つ目のムービークリップMCCを配置したいです。 MCCはMCA、MCBがドラッグで移動されると、MCAとMCBへの距離が等しい位置(厳密に等しくなくても良い)に移動させたいです。(結果、3つのムービークリップは一直線上に並ぶ) オーサリングツールは『ParaFla!』ActionSctiptは1.0相応で以下の様に作ってみましたが、いつまで経っても落ち着かないので改善したいです。 ※スクリプトのスペースは全角で記述。 ※ベクトルの計算に『HAKUHIN's home page』で公開されているライブラリを使用しました。 http://hakuhin.hp.infoseek.co.jp/main/as/vector.html ■ライブラリの取り込み _root上に配置したスクリプトに #FILE "vec2d.as" と記述。 ■MCA、MCB _root上にMCAを深度0、[固定]で配置。 _root上にMCBを深度1、[固定]で配置。 MCAとMCBにテキストで●を配置。 MCAとMCBに以下スクリプトを記述。 on (press){  this.startDrag(); // ドラッグを開始する } - on (release, releaseOutside){  this.stopDrag (); // ドラッグを解除する } ■MCC _root上にMCCを深度2に配置。 MCCにテキストで●を配置し、以下スクリプトを記述。 onClipEvent (enterFrame){  c_to_a = _root.Vec2dCreate(_root.MCA._x-_x,_root.MCA._y-_y);  c_to_b = _root.Vec2dCreate(_root.MCB._x-_x,_root.MCB._y-_y);  length_c_to_a=_root.Vec2dLength(c_to_a);  length_c_to_b=_root.Vec2dLength(c_to_b);  if(length_c_to_a > length_c_to_b){   long=c_to_a;  }else{   long=c_to_b;  }  pos_c = _root.Vec2dCreate(_x,_y);  long=_root.Vec2dNormalize(long);  long=_root.Vec2dScale(long, 5);  pos=_root.Vec2dAdd(pos_c,long);  _x=pos.x;  _y=pos.y; } 上記のようにして作成したものを以下に置きます。 http://carken.web.fc2.com/osiete/test.html 動かしてみると、いつまでたっても、細かく動いて止まってくれません。 厳密に同じ距離でなくても良く、ある程度見た目にOKかなってところで止まるようにしたいです。 アドバイスありましたら、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ビットマップデータのメモリ使用量について

    Adobe Flash CS6 AS3を使用しています。 ライブラリにpng連番画像を読み込みそれをムービークリップ内に配置し、そのムービークリップをメインのタイムラインにおくという形でフラッシュを作っているのですが、これではメモリ使用量が大きくなりすぎるのでなんとかしたいと思っています。 例えばmcAというムービークリップの内部にライブラリにインポートしたA01からA10という10枚の連番png画像を10フレーム分並べます。そして同じくムービークリップmcBの内部にライブラリにあるB01からB10という10枚の連番png画像を同じく10フレーム分並べます。その二つのmcをメインのタイムラインに配置します。これでmcAとmcBの10フレーム分のアニメが再生されますが、mcAかmcBどちらか片方だけを表示するようボタン操作ができるようにしています。ここで問題なのですが、例えばmcAを表示しているときにmcBは可視性を切って非表示にしていますが、メモリ使用量が減りません。こういった時に非表示にしているムービークリップのために確保したメモリーを開放する、といったことはできないのでしょうか?removeChildなどを実行してもメモリ使用量はまったく減りませんでした。 連番画像とそれを収めるムービークリップの数が増えれば増えるほどメモリ消費量が増えていってしまうので困っています。表示されていない内部にビットマップデータを配置してあるムービークリップのメモリーを開放するよい解決策がありましたら教えてください。 それと少し話がそれますが、ライブラリにあるビットマップイメージををリンケージしそのビットマップイメージをaddChildでステージに読み、そのビットマップイメージをdisposeで削除した場合にメモリーが開放されるのを確認しましたが、今の自分のやりかたよりこういった別の方法からフラッシュを作っていったほうがメモリー使用量を抑えられたりするのでしょうか?もっと効率の良い方法がありましたらそちらも教えてていただけると助かります。宜しくお願いします。

  • flashのランダム再生

    flash8で質問です。 5つのswfをランダムに読み込み、 5番目までいったらまた、ランダムにはじめから再生したいです。 ランダムで5つまで再生終わったらはじめからループという考え方でいいのでしょうか? ***************************** 外部にswfが5つおいてあります。 (外部ムービーの名前は1.swf、2.swfのように数字の番号の名前ではありません。) ///main.fla/// 配列にして (1.swf、2.swf、3.swf、4.swf、5.swf)をランダムで取り出し、 .load_mcに読み込む。 ランダムに1~5までのムービーの再生が終わったらまた ランダム再生を繰り返す。 というようなflashを作りたいです。 どうすればいいでしょうか。

    • ベストアンサー
    • Flash
  • swfを連続再生したいです

    Flashを作成しているのですが、別々に作成したswfを連続で再生しなければならなくなりました。 flaファイルは2つともあります。内容が複雑で容易に1からライブラリに読み込んで、結合するのが困難です。出来れば1つめのFlashからActionScript等で、次のFlashを連続で再生出来ればと思います。 なにかよいアドバイスがあれば教えてください。 なお、作成ソフトはCS5 proです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash cs4 ランダム再生

    Flash初心者です。 やりたいことはホームページ上でアニメーションを再生させる際に、複数パターンのアニメーションをページをリロードするたびにランダムに切り替えるということです。 Flashにてアニメーションのタイムラインを複数パターンつくり、ランダム再生をActionScriptで制御するものを作成したいと思います。 アニメーションのタイムラインを作成しムービーシンボルとしたものを複数作成し、それをシーン1のタイムラインにて各フレームに配置して、1フレーム目にActionScriptにてgotoAndStop(ランダムフレームの記述?);とすればいいのかなと思っているのですが、正しいでしょうか? 現状ではアニメーションのムービーシンボルは必要なパターンだけ作成しました。 シーン1のタイムラインに配置まではしたのですが、ActionScriptの記述が素人なものでさっぱりわかりません。 どなたか教えていただけませんか? 自分なりにやってみたのですが、ランダム関数(?)以前にgotoAndStop()すら思うようにいきませんでした。 Flashはcs4を使用しております。ActionScript3.0のプロジェクトにして添付画像のように1フレーム目に gotoAndStop(10); としてみたのですが、パブリッシュしたswf ファイルは真っ白のまま何も動いてくれません。 gotoAndstop(10); としてみたらstopせずにタイムラインを再生しているようで、各アニメーションの最初のフレームだけが切り替わるものになってしまいました。 ともにコンパイルエラー 1180:未定義である可能性が高いメソッドgotoAndstopの呼び出しです といわれます。 ActionScriptが2.0と3.0とどちらがいいのかもわかってない状態ですが、ご教授願います。

    • ベストアンサー
    • Flash
  • ウェブサイト(ホームページ)で音楽(BGM)を連続ランダム再生したいのですが。。。

    はじめまして。 この度個人のウェブサイトを開くに当たりまして、音楽(BGM.mid)を流すのですが、その方法についてご質問があります。 連続再生方法と、ランダム再生をどうにかして一緒に出来ないものかと考えております。 詳しくいうと、ウェブの入り口からメニューに入って音楽を流すのですが、入るとランダムで音楽が流れ、2回ほどループした後に違う曲がまた流れ出すといった感じを考えています。 今の所、メニューに入るとランダムで1曲流れて、次の曲に行かずそれで終わってしまっております。 どのサイトを見ても、ランダム方法か同じ曲の連続再生しか載っていません。 色々な曲をランダムで何曲も流す、というのが希望なので、タグを作ってくださる方はいないでしょうか? もしくは載っているサイトを教えていただきたいです。 ずっと探したり試行錯誤してるのですが、なかなか突破口が見つかりません。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • Flash swfのランダム再生

    こんにちは。今回はswfのランダム再生に関して質問させていただきます. 使っているバージョンはFLASHCS3/AS2.0です. たくさんのランダム再生に関する質問を参考に進めていたのですが,どうしても自分の理想通りにならないので質問させていただきました. やりたいこと. →btn というボタンをクリックして,mcに3種のswfを3連続ランダム再生したい. 自分で試してつくってみたところ,btnをクリックすると確かにランダムに3種のswfを選択しているようなのですが,選択した1種のswfを永遠に再生するだけになってしまいます.もちろんbtnをクリックするたびにランダムに再生してほしいのですが,3種のswfを3連続再生してほしいのです(重複可). 「3連続再生したあと実行をやめる」というASもわかりません. どうかご回答願います.

専門家に質問してみよう