- 締切済み
Flashでシンボルをランダムに表示する方法
環境FlashCS5、ActionScript2.0で1のつフレームで4つのシンボルを4つの決められた位置に重複せずに表示する方法を探しています。 たとえば位置1にはシンボルA、B、C、Dのうちどれかを表示させ、位置2には位置1に表示されなかった残りの3つの中から1つを表示、同じように位置3には位置1,2に表示されなかった残り2つのシンボルから1つを表示、位置4には残りの1つを表示という様にしたいです 方法をご存じの方、どうぞご教授願います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#2です。 とにかく #2で書いた「シンボルをステージ上に呼び出すこと」はできているものとした前提ですが(それが出来ない限りスクリプトも何もないので), 念のために私が勝手に作った状況での具体的な例を書いておきます。 ライブラリのムービークリップシンボルA、B、C、Dには リンケージの設定で それぞれ「A」「B」「C」「D」という識別子を付けたとします。 ※参考【下図】↓ その場合, それらムービークリップを呼び出すタイムラインのフレームに書くスクリプト例です。 ※あくまでも一例です。 詳細などは状況によって当然変わります。 //----------------------------------------------- //決められた位置オブジェクトを入れた配列を用意 var posObjArr = new Array(); posObjArr[0] = {_x:50, _y:50}; posObjArr[1] = {_x:110, _y:70}; posObjArr[2] = {_x:170, _y:90}; posObjArr[3] = {_x:230, _y:110}; //識別子を入れた配列を用意 var nameArr:Array = new Array("A", "B", "C", "D"); //ループ用変数 i の初期化 var i:Number = nameArr.length; //ランダムシャッフルに関するループ while (i--) { var j:Number = Math.floor(Math.random()*(i+1)); var tmp:String = nameArr[i]; nameArr[i] = nameArr[j]; nameArr[j] = tmp; } //識別子「A」~「D」のMCを呼び出して配置 for (i=0; i<nameArr.length; i++) { attachMovie(nameArr[i], "mc"+nameArr[i], i, posObjArr[i]); } //-----------------------------------------------
- BlurFiltan
- ベストアンサー率91% (1611/1754)
とりあえず,ランダムでなくても ライブラリにあるシンボルをステージ上に呼び出すことは当然できているものとします。 仮にもしそれも出来ていなければ 次のページ↓を完全に理解してください。 「リンケージについて」 http://1art.jp/flash/le/lessona/lessona.htm 次に,そのライブラリにあるシンボルA~Dをランダムに呼び出す方法になりますが これは #1 の方も書いていらっしゃる配列をランダムでかき混ぜて取り出す方法でできます。 「FN0212003 - 配列を偏りなくランダムに並替える - Flash テクニカルノート」 http://fumiononaka.com/TechNotes/Flash/FN0212003.html
- SAYKA
- ベストアンサー率34% (944/2776)
一番単純なやりかたは ランダムで数を発生させるんじゃなくて 配列をランダムでかき混ぜて取り出す方法かな。 位置情報のリストをかき混ぜるのか シンボルのリストをかき混ぜるのかはお好みで。 応用 位置情報もシンボル情報も混ぜられないなら 配列の位置の情報を配列化してそれをかき混ぜて参照すれば良い。