• ベストアンサー

コードからボタンを増やす

お世話になります よろしくお願いします。 WinXP SP3 Flash8 actionscript 2.0を使用しています cnt.txtに「cnt=6」と書いていて この6という数字を取得して ムービークリップを6個作りたいのですが こういうことは可能なのでしょうか? インスタンス名は連番でできればと思うのですが・・・ Actinscriptのコードからムービークリップなどを増やすことはできないのでしょうか? 以上よろしくお願いします

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

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

全体的によくわかりませんが, > cnt.txtに「cnt=6」と書いていて とは, 外部テキストファイルのファイル名が「cnt.txt」であって, そのテキストファイルの中に 「cnt=6」というデータが記入されているということでしょうか? > Actinscriptのコードからムービークリップなどを増やす これもよくわかりません。 増やすとはどう増やすのでしょうか? ・ステージ上にある,例えば「A」というムービークリップと同じものを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時 「A'」「A''」「A'''」「A''''」「A'''''」「A''''''」 ができる ・ステージ上にある,例えば「A」「B」「C」~「Z」というムービークリップを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時 「A'」「B'」「C'」「D''」「E'」「F'」 ができる ・ライブラリにある,例えば「A」というムービークリップと同じものを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時「A'」「A''」「A'''」「A''''」「A'''''」「A''''''」 ができる ・ライブラリにある,例えば「A」「B」「C」~「Z」というムービークリップを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時 「A'」「B'」「C'」「D''」「E'」「F'」 ができる ・その他(考えようによってはたくさんの場合がある) また, どこにどのように増やしたいのかもわかりません。 とにかく具体的でないので回答がしにくいです。 また, 回答するにしても勝手に具体的条件を決めて回答せざるを得なくなります。 よくわかりませんが,上に書いた3番目, ・ライブラリにある,例えば「A」というムービークリップと同じものを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時「A'」「A''」「A'''」「A''''」「A'''''」「A''''''」 ができる という場合は,次のようにすれば良いと思います。 ◎ファイル構造 (勝手に決めた具体的条件)  任意のフォルダ    ├○○.html (○○.swf を表示)    ├○○.swf (本題のFlash)    └cnt.txt (データ内容は cnt=6) ◎ ムービークリップ「A」の作成 (勝手に決めた具体的例) ステージ上に何か絵を描いて その絵を基準点を左上としてムービークリップに変換します。 ステージ上からそのムービークリップを消します。 ライブラリにはあると思うので, ライブラリでそのムービークリップを選択し, 「右クリック」→「リンケージ」などで「リンケージプロパティ」のパネルを表示させ,  □ ActionScriptに書き出し にチェックを入れて「識別子」の欄で「A」という識別子を付けます(↓図)。 ◎ ActionScript (勝手に作った具体的例) _root の フレーム1 に次のように書きます。 ------------------------------------------ // LoadVarsクラスのインスタンス 「cntVars」 を作成 var cntVars:LoadVars = new LoadVars(); // 外部テキストロード完了時に実行する関数を定義 cntVars.onLoad = function(Seikou:Boolean):Void { // ロードに成功すれば if (Seikou) { // 変数 i を 1~cnt までカウントアップしながらループ for (var i:Number = 1; i<=Number(cntVars.cnt); i++) { // _root にムービークリップ識別子「A」を // 「A○」 というインスタンス名で 深度○ に呼びだす _root.attachMovie("A", "A"+i, i); // 「A○」 を適当に横並びで並べる _root["A"+i]._x = 50*i; _root["A"+i]._y = 10; } } }; // 「cntVars」 に外部テキスト「cnt.txt」をロード cntVars.load("cnt.txt"); ------------------------------------------ これでパブリッシュすれば 「A」という識別子を付けたムービークリップがステージ上に 6 個並びます。 外部テキストファイル「cnt.txt」内の「cnt=6」を 例えば 「cnt=8」 に書き替えて保存しなおせば 「A」という識別子を付けたムービークリップがステージ上に 8 個並びます。 = = = = = = = = = = = = = = = = = = 長くなりましたが, 結局上で書いた内容のポイントは 『LoadVars』 と 『attachMovie』 です。 これらの用語で Googleなどで検索すると もっと詳細な説明や色々なバリエーションで参考になるサイトが見つかると思います。 あと, その 『LoadVars』 の中で 『for文』 と 『配列アクセス演算子』 を使っています。 こちらもわからなければ検索してみてください。 なお,上に書きました, ・ステージ上にある,例えば「A」というムービークリップと同じものを  cnt の個数だけ複製して増やす。  →結果:cnt=6の時 「A'」「A''」「A'''」「A''''」「A'''''」「A''''''」 ができる この場合は, 『attachMovie』 を使った部分が 『duplicateMovieClip』 を使うように変わるだけで 他はほとんど同じような感じでできると思います(リンケージ設定は不要)。

すると、全ての回答が全文表示されます。