[Flash Lite]分割画面でのランダム設定

このQ&Aのポイント
  • 携帯用の待ち受け画像を作成する際に、分割した画面に同じ画像が表示されないようにランダム表示させる方法について質問します。
  • ランダムな画像表示は作成したことがありますが、分割画面での同じ画像の重複回避方法がわかりません。
  • どのようなアプローチが効果的か、if文やswitch文などを使用して対応するのか、具体的なヒントを教えてください。
回答を見る
  • ベストアンサー

[Flash Lite]分割画面でのランダム設定

こんばんは。 現在Flash Lite1.1にて携帯用の待ち受け画像を作成しています。 説明用の画像を添付していますが、やりたいこととしては 1.携帯を開くたびに画像がシャッフルされる。 2.上段・中段・下段の3分割した画面に6種類の画像を 「一枚も同じ画像がかぶることなく」ランダム表示させる。 というものです。 ランダムで画像を表示させる待ち受けは作ったことがあるのですが、 分割した画面に同じ画像が表示されないようにランダム表示させるといった 複雑なものを作ったことがないので何から手を付けていいのかわかりません。 ifやswitchが使えるのかな?とは思うのですがいかがでしょうか。 完全なスクリプトの記述ではなくこんなのはどう?などの簡単なことで 結構ですので、どなたかヒントをいただけないでしょうか。 よろしくお願いします。

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

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

Flash Lite1.1 用 SWF には そもそも "配列などという概念はありません" が, 考え方としては次のページの方針が参考になると思います。 「配列を偏りなくランダムに並替える」 http://fumiononaka.com/TechNotes/Flash/FN0212003.html === 以下引用 ==================== // function定義: xShuffleArray // 引数: 配列 // 戻り値: なし function xShuffleArray(l_array) { var i = l_array.length; while (i--) { var j = Math.floor(Math.random()*(i+1)); //ランダムなインデックスを計算 var t = l_array[i]; l_array[i] = l_array[j]; l_array[j] = t; } } === 以上引用 ==================== 上のスクリプトを元に,この先を考えて行きます。 まず6枚の画像は 基準点を左上にしたムービークリップに変換してあって すでにステージ上にあるものとします。 (座標は適当で良いです。) そしてそれら6個のムービークリップには 「mc_a」「mc_b」「mc_c」「mc_d」「mc_e」「mc_f」 というインスタンス名が付けてあるものとします。 その場合のフレームに書くスクリプト例です↓。 //------------------------------------------ //MCの名前を登録する連番付き変数を用意 str0 = "mc_a"; str1 = "mc_b"; str2 = "mc_c"; str3 = "mc_d"; str4 = "mc_e"; str5 = "mc_f"; //引用部分を変更 i = 6; while (i--) { j = random(i+1); t = eval("str" add i); eval("str" add i) = eval("str" add j); eval("str" add j) = t; } //変数「str0」~「str2」該当MCを適当な座標に配置 setProperty(str0, _y, 10); setProperty(str1, _y, 110); setProperty(str2, _y, 210); //「str3」以降のMCを非表示にする i = 3; while (i<=5) { setProperty(eval("str" add i), _visible, false); i++; } //------------------------------------------ (質問されているカテゴリが少し違うかな? という気がします。)  

potapota24
質問者

お礼

ご回答ありがとうございます。 すみません詳しくスクリプトを載せていただきましたが、 自分にはレベルが高すぎてすぐには理解ができそうにないです・・・。 参考サイトも載せていただきましたので勉強しながら進めていければと思っています。 ありがとうございました。

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.1

「かぶらないように3つ選んでから、表示」すれば良さそうですね。 3枚ぐらいだったら、「かぶったら選び直す」というアルゴリズムでも、それほど時間はかからないでしょう。 [例1] (1)画像1=ランダムに選ぶ (2)画像2=ランダムに選ぶ:画像1と同じ物になったら戻って2を選び直し (3)画像3=ランダムに選ぶ:画像1または2と同じ物になったら戻って3を選び直し (4)画像1・2・3を表示する。 汎用的に考えるならば、例えば次のような方法があります。 [例2] (1)画像の数だけ、配列要素を用意します。 (2)配列の各要素に、順番に数を入れます。要素(1)=1、要素(2)=2、…要素(6)=6。 (3)適当な回数、配列をシャッフルします。例えば10回、要素(ランダム番目)と要素(ランダム番目)の値を入れ替えます。 (4)配列要素(1)~(3)に入っている番号の画像を、表示画像として採用します。 もし、選択しなければならない画像が9枚(9分割)とか16枚(16分割)になった時のことを考えると、例1の方法では比較対象の変数がどんどん多くなり、また、いつまでもどれかと同じ画像が選ばれてしまって、無限ループ的な動作になってしまうかもしれません。 例2のアルゴリズムならば、規定回数ループしたら終了することが保証され、番号が重複して選ばれることもありません。 ※どちらのアルゴリズムであっても、画像が3枚未満(分割枚数未満)である場合のことは一応想定しておかなければいけませんけどね。 例1の場合の想定はまあ書くまでもないでしょう。 例2の場合…9分割で画像が5枚しか無かったときは、最低9要素は用意して、次のように初期化すれば良いでしょう。 要素(1~9)=「1、2、3、4、5、1、2、3、4」

potapota24
質問者

お礼

ご回答ありがとうございます。 配列に関しての知識不足のため、完全に理解することが 今の私では難しいですが、勉強しながら進めていければと思っています。 ありがとうございました。

関連するQ&A

  • Flash Liteで作成したFlash待ち受け画像をループ再生する方法

    超初歩的な質問になりますが、Flash Lite1.1で作成したFlash待ち受け画像を携帯上でループ再生する方法を教えて下さい。 Flash講座などでswfファイル自体にループ再生するよう指示するアクションスクリプトの書き方を探して試してみましたが、ループしませんでした。auのFlash lite対応機種2台で試しました。 単に書き方が間違っているのでしょうか?それとも、ループ再生させるアクションスクリプトはFlash liteには対応していないのでしょうか?何か別の方法があるのでしょうか?アクションスクリプトは全くわからないので、検討もつかないという状態です。 どうぞ宜しくお願いします。

  • (Flash Lite 1.0) フレームアクションでのキーイベント

    携帯用のFLASH(Flash Lite 1.0)で静止画像だけの絵本を作っています。 インタラクティブモードで、ページをめくって次のフレームへ移動させる方法についての質問をさせてください。 今までは、「次ページへ」のようなボタンシンボルを作って画面の下段に置き、そのボタンに対するaction scriptとして ************************************* on (release){ nextFrame(); } ************************************* のように書いて実現していました。 これだとそのボタンシンボル自体が画面レイアウト上邪魔になってきたので、ボタンは無くしてしまい、ボタンにフォーカスさせることなく、フレーム上のアクションスクリプトで記述して、いきなり0や1のキーをたたいて次のフレームへ移動させられないか、と考えています。 ところが、onイベントはボタンにしか使えないようで、身の程知らずながらエキスパートモードに切り替えて、強引にフレームに使おうとしてもシンタックスエラーになってしまいます。 FLASHの教則本などには、"keyListener()"などの手法が載っていますが、携帯FLASHでは、FLASH Player4という制約があり使えません。 以前、どなたかのサイトで入手した携帯FLASHで、確かにボタンを使わずにキーをたたくだけで次のフレームは移動させていたのは記憶にあるので、何らかの方法は存在すると思うのですが、完全に暗礁に乗り上げてしまっています。どなたかアドバイスがありましたらよろしくお願いします。

    • ベストアンサー
    • Flash
  • iPhoneでFlash待ち受けはできますか?

    iPodTouch.iPhoneで待ちうけ背景を設定してスリープボタンを 2回押すと待ち受け画面(ロック画面)になりますが その待ち受け画面を携帯電話のようなFlash待ち受けにはできませんか? ロック画面が表示されたらFlashが再生するような設定をしたいです GIF画像を試しましたが無理でした

  • 携帯電話用flash待ち受けを作りたい!!!

    携帯用のflash待ち受けを作ってみたいんですが、  (1)携帯を開けるたびに画像が変わる待ち受け  (2)時計や日時が表示される待ち受け はどのように作ればよいんでしょうか? それとも、そもそもそれらはflash待ち受けとは言わないんでしょうか? 一応「ParaFla!」というソフトでフラッシュ自体は作れるようになりました。 (HTMLなどは全然できませんが…) どなたか回答をよろしくお願いします。m(--;)m

  • Flash8 を モバイル用の待ち受けに

    カテゴリ違いに気付き、こちらでお願いします。 今回、趣味を兼ねて仕事で <Flash 8で携帯の待ち受けムービー>を作る事になりました。 Flashでの動きは作れるのですが、モバイルで確認すると表示できません。(重さ、サイズも注意して作成しているつもりです。) 動きは、スクリプトなどは特になく、単純な物です。 携帯の機種によっても表示できない機種もあるようですが、 FOMAでFlashも表示できる最新機種です。 今回、webサイトを作成するということではないので、 サーバーにアップすることはなく、 「相手にメール添付で送って、相手が表示でき、待ち受けにできればいい」 といった内容です。 相手は複数ですが、もちろんFlashを表示できる機種です。 私がやったやり方を簡単にご説明いたしますと <Flash Lite1.0やFlash Lite1.1で作成→ →.swfで保存→相手にメール添付といった方法です。 ところが表示されません。 本を購入し、色々勉強したのですが、 「Flashでモバイル用のサイトを作成する」といった 内容の本で、今回、私がやりたい内容とちょっと違いました。 私のやりかたがおかしいのでしょうか? 困ってしまってます。どなたかアドバイスをお願い致します。 メール添付だと無理なのでしょうか? よろしくお願いします!!

  • Flash lite 1.1で、指定範囲内をランダムに動き回る待ち受け

    Flash lite 1.1で、指定範囲内をランダムに動き回る待ち受け画面を作成したいです。 動作イメージは以下の様な感じなのですが・・・ ・ステージサイズは『240×320』 ・ムービークリップを動かしたい範囲は上下中央の『220×220』 ・220×220の範囲内を、  雲の形のムービークリップがフワフワ浮かびながらランダムに移動する ・雲は、220×220の範囲からはみ出ない for文を使用し、 指定した数値内を移動させるという形になるのかなぁ・・・と思うのですが、 スクリプトの記述方法が分からず、途方に暮れております・・・。 知識のある方がいらっしゃいましたら、お力添え頂けますと大変嬉しいです。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • FLASH待ち受けの表示が変

    FLASH初心者です。このたび、FLASHMX2004(プロフェッショナルではありません)で、 風景写真に、雲が左から動いていく…というなFLASHアニメ待ち受けを作っていました。 端末はau、W51Pです。サイズは240×400で作っていました。パブリッシュ設定はPlayer4で書き出しました。 が、表示がおかしい上に、ループしないのです。 まず、ループの問題については、最後のフレームに、 gotoAndPlay(1); というスクリプトを書きました。 が、待ち受けに登録されると全くループしなくなります。 EZ接続で直接DLする際に見たときは、異常なくループされていました。 これは携帯電話の相性によるものなのでしょうか?それとも、スクリプトを書く場所を 間違えたのでしょうか?Player4で書き出していることが原因であるのでしょうか? 背景画像と雲のレイヤーそれぞれに、このスクリプトを配置しました。 二つ目の問題は、表示です。 240×400(携帯電話のサイズ)で制作しているにもかかわらず、携帯電話で表示すると、 左側…実寸約3mm程度、画像が右にずれて表示されており、つまり左側3mm程度 白い部分がある、アニメーションされている雲は見えるのです。 アニメーションしている雲は、制作サイズより横に大きく作られています。 下も同様、実寸3mm程度上にずれて表示されています。 保存後、待ち受け画面に登録すると、左側の白い部分は消え、横幅は携帯電話のサイズぴったりに表示されますが、 下の部分が実寸3mm程度白い部分が出来てしまいます。 携帯電話ぴったりのサイズで作ってあるのですが、まったくぴったりに表示してくれません。 その後少し大きめに制作しましたが、全く同じ結果になりました。 FLASH Lite で制作していないからこうなっているのでしょうか? どうしたら改善できるか、どうかご伝授願います! こちらがデータです。 ttp://www.geocities.jp/keio_model_9000/kabegami.swf

  • F902iS(ルシードブラック)の待受画面

    先日「F902iS」ルシードブラックに機種変更したのですが、標準型待受画面にある中段の[Mood]メーターの意味がわかりません。 上段は日時、下段はエネルギー(=電池レベル)でわかるのですが、中段のムードメーターは何を意味しているんでしょうか? 時々動いているようなんですが・・・。 説明書を見ても、どこにも意味が載っていないようで。 もしかしたら、見落としかも知れませんが、ご存知でしたら教えて下さい。

  • ランダム表示→別画像に切替わる待受FLASHの作成

    FLASH制作初心者です。 開閉時ランダムで画像が表示される待受FLASHを 制作しているのですが、その画像が表示された後 別の画像に切り替わる仕様のものを 作りたいと考えております。 ちょっと説明がし辛かったので キャプチャ画像を添付させていただきました。 携帯用なので、FLASH Lite 1.1を使用、 サイズは240×320です。 ---------------------------------------------- 埋め込んだ9枚の画像の内、1枚をランダムで選ぶ (赤い丸が描かれた画像が選ばれたものとする)   ↓ 選ばれた1枚を表示後、変化 (赤い丸が赤い星に変化) ---------------------------------------------- といった感じです。 そもそも“random();”の単純なスクリプトで このような仕様が組めるのか… 急を要するのですが勉強不足故、 頭が追いつかない状況です。 専門の方、詳しい方… どなたかご教授いただけましたら幸いです。 よろしくお願いいたします。

  • ランダム英数

    Flash Lite1.0でランダムの英数を表示させたく、 以下のスクリプトを書いてみたのですが eisuu="0123456789abcdefghijklmnopqrstuvwxyz" text = random(eisuu); randomは整数しか表示されないようで困っています。 英数をランダムで表示させるにはどのようにしたら良いのでしょうか? 分かる方がいらっしゃればお教え下さい。 宜しくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう