• 締切済み

ランダムに画像ファイルを選出するには?

horsewaterの回答

回答No.2

ActionScriptをはじめ、最近の言語は動的にサイズを変更できる配列を使用できて楽なのですが、内部的にはメモリの使用効率が悪かったりします。 sassakun様の例で使用されている splice はその象徴的なものなのでしょう。 おそらく内部では 1.splice後のサイズの領域を確保。 2.splice前の値をすべてコピー。 といったことをやっているのでしょう。 サイズが大きければ大きいほど、この処理にも時間がかかり、またループする回数も多いので 1000と 10000ではだいぶ処理時間が違うのでしょう。 こんなときには昔ながらの方法が役に立ちます。 ↓が私がやったスクリプトです。 CPU2000MHz程度ですが、300ミリ秒程度でランダム配列を作成できました。 -------------------------------------------------- // 写真の枚数の登録 var pNum:Number = 10000; // //※処理時間を求めるためのスクリプト1 var time1:Number = getTimer(); // // 配列 aArr 要素の作成 var aArr:Array = new Array(pNum); // aArr[0]~aArr[9999] の配列に 0~9999 の数を代入 for (var i:Number = 0; i<pNum; i++) { aArr[i] = i; } // 配列をランダムにSWAPする for (var i:Number =0; i<pNum; i++) { // i番目と入れ替えるインデックスをランダムに選ぶ var j:Number = Math.floor(Math.random()*aArr.length); // SWAP var tmp:Number = aArr[i]; aArr[i] = aArr[j]; aArr[j] = tmp; } //※処理時間を求めるためのスクリプト2 var time2 = getTimer(); // 確認のため100件だけ表示してみる for(var i:Number =0; i<100; i++){ trace(aArr[i]); } trace("所要時間:" + (time2-time1) + "(ms)");

関連するQ&A

  • 画像のランダム表示

    こんにちは。 フラッシュで、画像をランダムに表示させたいのですが、 スクリプトの書き方がわかりません。何方か教えていただけないでしょうか? 構成は ステージ上の【表示ゾーン(zon_mc)】ムービークリップの中に【バリ表示(bari_mc)】ムービークリップを作っています。 トップのステージのタイムラインとは別に画像を表示、非表示させたいのでこのような形になってます。 表示させたい画像は【bari】ファルダの中の【bali01.jpg】~【bali06.jpg】です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ランダムで画像を表示させるには?

    環境はFlashCS5で、アクションスクリプト3.0を使用しています。 5枚の画像(インスタンス名:mc0~mc4)をランダムで表示させるムービーを制作しているのですが、 下記のスクリプトですと、ランダムで画像が表示されるのですが、画像の切り替えがループになってしまって、次から次へとランダムで画像が切り替わります。フレーム1に下記のスクリプトを記述し、フレーム1にムービーインスタンス「mc0」から「mc4」を配置しています。 function randomShowMC():void { for (var i:int=0; i<5; i++) { this["mc" + i].visible = false; } var rnd:int = Math.floor(Math.random() * 5); this["mc" + rnd].visible = true; } randomShowMC(); var myTimer:Timer = new Timer(3000); myTimer.addEventListener(TimerEvent.TIMER ,function(){randomShowMC()}); myTimer.start(); このスクリプトを改良?改造?して、ランダムの画像が1回のみ…つまり、おみくじみたいに、(mc0~mc4の画像を)ランダムで1回のみ画像を表示させたいのです…表示後の画像が切り替わらずそのままで停止させたいのです。 又は、ムービーインスタンス「mc0」から「mc4」の画像をランダムで表示させ、最初に表示された、その画像で停止させるスクリプトを新規に記述しても構いませんので、ご指導・アドバイスをお願い致します…。 どなたか、解る方がいましたらランダム画像表示で1回表示のみのループしないスクリプトを教えてください。よろしくお願い致します…。

    • ベストアンサー
    • 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) この並びをアクションスクリプトで変えることは可能なのでしょうか?可能だとすれば、どのようなスクリプトを記述、もしくは参考にすれば良いでしょうか? 初心者な質問で申し訳ございませんが、宜しければどなたかご回答のほど宜しくお願い致します。

  • ムービークリップ再生順序 制御について

    はじめて質問します。Flash初心者ゆえつたない説明ですいませんが、よろしくお願いします! Flash:ActionScript2.0 [現状] メインフレームにABCというムービークリップを配置しています。 それぞれ「mc1」「mc2」「mc3」というインスタンス名がついています。 各ムービークリップにはそれぞれ動きが設定しており、”moving”というフレームラベルをつけています。 [どう動作してほしいか] まずAのムービークリップが再生。Aのムービークリップ再生終了。 ↓ Bのムービークリップ再生開始。Bのムービークリップ再生終了。 ↓ Cのムービークリップ再生開始。Cのムービークリップ再生終了。 ↓ Aに戻る。 上記の動きをタイムラインを利用するのではなく、メインフレームに1つactionScriptを書くことで動作させるにはどうしたらいいでしょうか? ちなみに今は以下のように記述しており、実行すると3つのムービークリップが全て同時に動いてしまいます。 var list:Array = new Array(); for(var i=1; i < 4; i++) { var mcname = "mc" + i ; list[i] = eval(mcname); list[i].gotoAndPlay("moving"); } よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部ファイル読み込む用の ムービークリップのインスタンスを配置

    大変初歩的な質問で申し訳ございません。 アクションスクリプトの質問というよりかflashの操作の方になると思います。 Flashのおもしろさにハマり、初心者ながら勉強しているところで、 やはりActionScriptの知識もあるとまた幅が広がって楽しいだろうなと勉強し始めました。 それで、ActionScriptの書籍を注文したのが届くまで、「写真紹介ムービーを作りながら、ActionScriptの基礎を理解していこう」 という親切なサイト様を見つけまして、まずは全く分からないところがあっても、 調べながらでも最後まで作ってみれば少しは言語を知ることができるだろうと、一章、二章と進めていっておりました。 ttp://flash.frogstone.jp/as2_basic/index.html ALPHA FROGさま それで行き詰ってしまったのが ttp://flash.frogstone.jp/as2_basic/chapter4/1.html swfファイルの軽量化の「外部ファイル読み込む用の ムービークリップのインスタンスを配置」 「pict_mcと、thumbnail_mcには、外部ファイルを読み込むためのムービークリップのインスタンス(以下base_mc)を配置しています。 このbase_mcは外部ファイル読み込み専用のムービークリップで、中身は何もありません。」 の部分です。なかなか伝わりにくい部分もあって申し訳ないのですが、 アドバイスしていただける方がいましたらよろしくお願い致します。 現状ではシーン1にpict_mcとthumbnail_mcは配置されております。 それでどこを探してもbase_mcが見つからなく、どこにActionScriptを記述すればいいのだろうかと、分かりません。 探しても考えても分からず、こちらに質問させていただきました。 もしお分かりになる方がいましたらよろしくお願いしたします。 あと初心者がActionScriptに入りやすい書籍やサイト様がありましたら 教えていただけると嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS2:画像ファイルをランダムに読み込むコード

    actionscript2.0で画像ファイルをランダムに読み込み、表示するコードを教えて下さい! バナーを作りその中に100枚くらいの画像ファイルが入ったファルダから 読み込むといった感じです。 画像ファイル数は増えたり減ったりしますので、それを想定したコードがありがたいです。 読み込んだファイルは横に動くスライドショーになる予定です。 PC環境:Adobe Flash CS5 actionscript2.0 Flash Player8 まだ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
  • 外部画像を1分ごとにランダムで読み込みたい

    ParaFlaで外部画像がランダムに読み込まれて表示されるフラッシュを作りたいと思っています。 外部画像の枚数は不定で(今後増えます)、ファイル名は連番で付けています。 画像を1分ごとにクロスフェードで切り替えながら読み込むには、 ActionScriptをどう記述すればいいでしょうか。 このフラッシュはデジタル時計付きで(時計は問題なく動いています)、 画像の切り替えを時計と連動させ、1分ごとの切り替えにしたいと思っています。 12:01に1枚目が表示され、12:02に2枚目が表示され・・・という感じです。 時刻の1分ごとに、外部画像をランダムで読み込み、 クロスフェードで切り替えながら表示させたいと考えています。 お分かりになる方がいらっしゃいましたら、 アドバイスをどうぞよろしくお願いいたします。

  • Flashでムービークリップのランダム表示

    ActionScript初心者で過去ログを探してみたりもしたのですが、(探し方自体がヘタなのかもしれませんが(^_^;)・・・)わからなかったもので。 下記のFlashムービーで画面右半分に表示されている減速&加速して画面上を流れる球体のようなムービーを制作する場合。 http://www.kips-ps.com/main/ 例えば10数種類程度の下から上へと流れる、フレーム数の異なるモーショントゥイーンを含むムービークリップを作成して、それぞれをレイヤーに配置するーというような作業だけでできるのでしょうか? それともActionScriptからMCの表示・動作を制御したりしないと、それっぽく見えないものなのでしょうか? 質問そのものが拙い内容であるようにも思うのですが、よろしくお願いいたします。

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

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

    • ベストアンサー
    • Flash