Flash8でムービークリップをランダムに表示させる方法

このQ&Aのポイント
  • Flash8を使用して画面上にランダムでムービークリップを表示させたい場合、以下のスクリプトを使用します。しかし、スクリプトの一部でエラーが発生してしまい、正常に表示できません。
  • 問題点は、パブリッシュする際にエラーが発生することです。具体的には、スクリプトの「_root.attachMovie(["chara"+a], "chara", 0);」の部分で「タイプが一致しません。」というエラーメッセージが表示されます。
  • 質問者の作業環境はWindowsのFlash8です。この問題の解決策を教えていただけると助かります。
回答を見る
  • ベストアンサー

画面上にランダムでムービークリップを登場させたい

5つのムービークリップをランダムで入れ替えて表示させ たいと思っています。 以前に下記URLの質問で詳しい回答がされていましたので、 説明の通りにやってみたのですがスクリプトのエラーで うまくいきません。 http://oshiete1.goo.ne.jp/qa1880922.html パブリッシュすると、 _root.attachMovie(["chara"+a], "chara", 0); の部分で「タイプが一致しません。」というエラーが でてしまうのです。 問題点を教えていただけませんでしょうか。 私の作業環境は、WindowsのFlash8です。 どうぞよろしくお願いいたします。

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

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

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

なんで 配列アクセス演算子([]) など使っているのでしょうかね??? よくわかりませんが配列アクセス演算子を消して次のようにすれば良いと思います。 // "chara" というインスタンス名で 呼び出す _root.attachMovie("chara"+a, "chara", 0); しかし... 配列アクセス演算子を入れたままでも(入れなくても) パブリッシュ設定で ActionScript 1.0 設定にすれば、 ちゃんとライブラリのムービークリップが呼び出せるんです(MXの頃はActionScript 1.0 だった)。 なぜ、ActionScript 1.0 だとうまく行くのか、これまた説明ができませんが、 とにかく配列アクセス演算子は不要です。

walkingdog
質問者

お礼

ありがとうございます! 絶対に自分では解決できなかったと思いますので 大変助かりました! 図々しくて恐縮ですが、 もしおわかりになればもう一つ教えてください。 前記URLのサンプルですと、各ムービークリップは 同じ長さ(時間)であることが前提ですが、 各ムービークリップの長さが違う場合に、 各ムービークリップの再生終了後に切り替えるように するにはどうしたらよいのでしょうか? どうぞよろしくお願いいたします。

関連するQ&A

  • ランダムに降りつつさらに回転をさせたいのですが

    ランダムに雪がふりつつ、回転もランダムに加えるスクリプトを 作成したのですが、 http://oshiete1.goo.ne.jp/qa2434589.html こちらのANo.2さんのサンプルのスクリプトにさらに、 作成される雪のムービークリップ一つ一つに、 ランダムな回転を加えたいのですが、どうしたらよいのでしょうか? どうか宜しくお願い致します。

    • ベストアンサー
    • Flash
  • removeMovieClip()で画面が固まる

    こんばんは。 透明ムービークリップ上でマウスをクリックすると、ライブラリに登録されたムービークリップシンボルをattachMovie()で生成するflashを作っています。生成するのはできるのですが、「Clear」ボタンをつくり、ボタンを押すと、生成したインスタンスをすべて一度に削除するスクリプトを仕込んでいます。しかし、Clearボタンを押すとFlashが固まります。たぶん、スクリプトの書き方に問題があると思うのですがわかりません。わかる方がいらっしゃったらお教え願います。 //インスタンスを生成するスクリプト onClipEvent(load) { count = 0; } onClipEvent(enterFrame) { this.onPress = function() { count++; mouseX = _root._xmouse; mouseY = _root._ymouse; charaName = "Chara" + count; obj_format = {_x:mouseX,_y:mouseY}; attachMovie("chara1",charaName,count,obj_format); } } //インスタンスを削除するスクリプト on(press) { for(i = 1;i <= count; i++) { tmp = "Chara" + i; _root[tmp].removeMovieClip(); } count = 0; }

    • ベストアンサー
    • Flash
  • Flash8 ムービークリップをランダムに表示(更新する度に順番を変更)

    他の質問を確認させて頂いたのですが「更新する度に順番を変更」という部分で行き詰まり、今回質問させて頂きました。色々と調べたのですが、同じ質問が存在していたら申し訳ございません。 今回FLASHの作成で、1つのSWF内で3つのムービークリップ(mc_01、mc_02、mc_03)をランダムな順番で表示させたいというものです。ランダムに表示させるまでは、何とか行き着いたのですが、行き詰まったのは「更新の度に前回と順番が重複しない」ということです。 現在の状況は、下記の通りです。 mainというムービークリップに3つのムービークリップ(mc_01、mc_02、mc_03)をランダムに表示。 スクリプトは、下記の通りです。 var a = Math.floor(Math.random()*3)+1; main.attachMovie(["mc"+a], "mc", 0); 現状だと、更新する度にランダムに表示されますが、更新を押した際に、先頭が前回と同じムービークリップになってしまうことがあります。 (一回目の更新:mc_02 → mc_01 → mc_03) (二回目に更新:mc_02 → mc_03 → mc_01) この並びをアクションスクリプトで変えることは可能なのでしょうか?可能だとすれば、どのようなスクリプトを記述、もしくは参考にすれば良いでしょうか? 初心者な質問で申し訳ございませんが、宜しければどなたかご回答のほど宜しくお願い致します。

  • ランダム配置のムービークリップが固定配置のムービーに被ってしまいます。

    背景にランダムで星を無数に配置して瞬かせ、その上にキャラクターのムービークリップを配置しているのですが、星のレイヤーよりキャラのレイヤーを上にもってきても、星がキャラクターに被って表示されてしまいます。星の方のムービークリップに、 n=Math.round(Math.random()*1000); this.swapDepths(n); 以上の様にスクリプトで深度の設定をランダムに設定しているのですが、キャラクターの方にはどのように設定したら星が被らない様に深度の設定ができるのかわかりません。どうかよろしくお願い致します。

  • ムービークリップの階層の問題?

    Flash8を使っています。 質問のタイトルと内容が合致しているのかどうか不安ですが以下のようなことをしようと思っています。  ------------------ | 選択した部品を置く領域choiceMC    ------------------    =================   |  部品を閲覧する領域 buhinMC   |                     ← |  ■   ■   ■   ■   ■    →→   |  部品となるムービークリップ      左右にスクロール   |  インスタンス名はなし   ==================                                →→→次の画面へボタン 部品となるムービークリップが約100個あります。インスタンス名はつけていません。 1画面で表示できないので画面を左右にスクロールして見ることができるようにしました。それがbuhinMCです。 使いたい部品のムービークリップはchoiceMCというムービークリップ上にドラッグアンドドロップをしておきます。 ここまではできているのですが、buhinMCを左右にスクロールをするとchoiceMC上にある部品のムービークリップまでが一緒にスクロールしてしまいます。 choiceMCとヒットした部品のムービークリップは、buhinMCがスクロールした後でも、そのままchoiceMC上に置いておきたいのです。 選択した部品には以下のようなスクリプトが書いてあります。 on (press) { this.startDrag(); } on (release) { this.stopDrag(); if (_root.choiceMC.hitTest(_root._xmouse, _root._ymouse, true)) { my_x = this._x; my_y = this._y; 以下続く これで説明しきれているかどうか分かりませんがどうか教えてください。

    • ベストアンサー
    • Flash
  • ムービークリップの入れ子

    Flash CS3の初心者です。ムービークリップの入れ子を使用した際、こちらが思うようにフレーム処理をしてくれません。 "TOP"と名前をつけた1つのシーンに「アクションスクリプト」、「画像」、「テキスト」の3つのレイヤーを準備し、「画像」レイヤーには入れ子になったムービークリップを挿入しています。 入れ子のムービークリップに仕込んだモーショントゥイーンが終わってからテキストを表示する処理をしてほしいのですがうまくいかず困っています。 <作業内容> (1)画像レイヤーにはモーショントゥイーンを仕込んだムービークリップを1フレーム目から挿入しています。(作業場所:TOP/) (2)順序付けのためテキストレイヤーは1フレーム目は空白にし、2フレーム目から挿入しています。(作業場所:TOP/) (3)アクションスクリプトのレイヤーには1フレーム目と2フレーム目にはそれぞれ以下の記入をしています。(作業場所:TOP/)  this.stop(); (4)画像レイヤーに挿入したムービークリップでは、入れ子のムービークリップのレイヤーの他にアクションスクリプトのレイヤーを設け、その最終フレームでは"this.stop();"、"gotoAndPlay(2,"TOP");"と記入しています。(作業場所:TOP/画像ムービークリップ) <問題> (1)~(4)でムービープレビューを実行すると、入れ子にしたムービークリップのモーショントゥイーンは最後までうまくいきますが、(4)の"gotoAndPlay(2,"TOP");"がエラーとなり、「ArgumentError: Error #2108: シーン TOP が見つかりません。・・・」となってしまいます。 シーン名はウィンドウのシーンパネルで確かにTOPに変更しています。ちなみに"TOP"をthis.parentに変更して実行すると、3つのレイヤーの処理が同時にスタートしてしまいます。 最初に記載した動作の実現方法や参考HPについてご教授頂けると大変助かります。よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップをボタン操作でランダムに再生

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

  • 【FLASH】ムービークリップの色変え

    こんにちは。 携帯向けのFLASH待ちうけを作成しているのですが 9種類のキャラクターがランダムで登場する設定になっています。 種類が多いのでどうしても容量が大きくなってしまいます。 大元のムービークリップを色を変えて使いまわしたいのですがうまくいきません。 どなたかご教授いただけないでしょうか? 説明用の画像を作成したのですが貼り付けると自動調整されてしまい 文字が非常に読みづらくなってしまいました。 yahooフォトに画像掲載したのでお手数ですがこちらを参照していただきたいです。 http://photos.yahoo.co.jp/kaerunokimutidon ※シンボルの色変えはネットを検索していて見つかったのですが ムービークリップについては触れていなかったので、もしかして ムービークリップではできないのでしょうか。。。?

  • ムービークリッププロパティの変更

    こんにちは。 ムービークリップA_mcをロールオーバーした時にムービークリップB_mcを表示ロールアウトした時にムービークリップB_mcを非表示にしたいのです。 まずはムービークリップB_mcの_alphaを100にするスクリプトを記述しようとしています。 B_mcはアニメーションですでに_alpha=0でステージにおかれています。 A_mcに on(rollOver){ _root.B_mc._alpha=100; } on(rollOut){ _root.B_mc._alpha=0; } と記述したのですが、表示されませんでした。 試しにと on(rollOver){ _root.B_mc._visible=true; } on(rollOut){ _root.B_mc._visible=false; } としてもだめでした・・・ すみません。原因がよくわからず対処方法もわかりません・・・何方かご教授頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップを特定の組み合わせでランダム再生

    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

専門家に質問してみよう