• ベストアンサー

Flash内のテキストを外部から書き換えるには

サイトの管理者以外(知識の無い人)でも Flash内のテキストを外部から 書き換えられるようにしたいのです。 例えば、 テキストを表示するSWF以外に、 別ページのテキスト更新用フォームを設けて そこから入力・送信する事で指定部分のテキストが書き換えられる、 というようなものを作りたいんですが どのような方法を使えばよいのでしょうか? 当然ActionScriptのみでは解決出来ないと思うのですが 他の言語との連携はしたことが無く、疎いもので・・ 詳しい方宜しくお願いします。

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

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

#1の方の書いていらっしゃるような方法でもできますが, JavaScript経由でも一応できます。 と言いつつ, 私もあまりそういうことはしませんから, 詳しくはありませんが一応次のようにするとできます。 ファイルとしては3つ用意するものとします。  任意のフォルダ    ├ aaa.html (データ送信)    ├ bbb.html (データ受信)    └ ccc.swf (bbb.html に貼りついている) 「aaa.html」 にテキスト入力フォームがあって, そこから同じ階層の 「bbb.html」 にその変数を GET で送り, 「bbb.html」 の JavaScript で URLクエリ を取得し, FlashVars で 「ccc.swf」 に送信して, 「ccc.swf」 内のテキストフィールド・インスタンス名「my_txt」に入力フォームのデータを表示させる。 という例です。 「aaa.html」の HTMLソースコード例↓ ----------------------------------------- <html> <head> <!-- ↓ UTF-8 しかうまく行かない模様です↓ --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>aaa</title> </head> <body> <form action="bbb.html" method="get" target="_blank"> <p> <input type="text" name="my_var" size="28"> <input type="submit" value="送信"> </p> </form> </body> </html> ----------------------------------------- 「bbb.html」の HTMLソースコード例↓ ----------------------------------------- <html> <head> <!-- ↓ こちらは UTF-8 でも Shift-JIS でも OK です↓ --> <!-- meta http-equiv="Content-Type" content="text/html; charset=shift_jis" --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>bbb</title> </head> <body> <script language="javascript"> // 変数 data に URL の「?」より後を取得 var data= location.search.slice(1); // 「ccc.swf」 を貼り付けるタグを書き込む document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="ccc" align="middle">'); document.write('<param name="movie" value="ccc.swf" />'); document.write('<param name="FlashVars" value="'+data+'" />'); // document.write('<embed src="ccc.swf" FlashVars="'+data+'" width="550" height="400" name="ccc" align="middle" type="application/x-shockwave-flash" />'); document.write('</object>'); </script> </body> </html> ----------------------------------------- 「ccc.html」のフレーム1の ActionScriptコード例↓ ------------------------------------------ // ↓ false ですから書く必要はありませんが... // System.useCodepage = false; // インスタンス名 my_txt のテキストフィールドに // my_var の値を urlデコード して表示 my_txt.text = unescape(my_var); ------------------------------------------ 結局, ActionScript は my_txt.text = unescape(my_var); の1行のみが必要なだけで, あとは HTML と JavaScript ばっかりですね。 私はこの HTML JavaScript 言語分野はほとんど素人です。 ※ 「aaa.html」の文字コードを UTF-8 にする必要があるのは,   ActionScript の unescape() が,   UTF-8 に対してしか正常に動作しないためです。

unjmj
質問者

お礼

大変解りやすい解説をありがとうございました。

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

その他の回答 (1)

回答No.1

> 別ページのテキスト更新用フォームを設けて > そこから入力・送信する事で指定部分のテキストが書き換えられる、 と言うことは、ファイル渡ししかないのでは、 CGIとかでフォームのテキストデータを書き込んで そのテキストデータをSWFで読み込んで表示ですね。 もっと特殊なことがしてみたいですか・・・

unjmj
質問者

お礼

回答ありがとうございます。 つまり、フォームでテキストファイルを編集し それをFlash側で外部テキストとして読み込むという事ですか よくレンタルサーバーで提供されている ファイルマネージャのようなものでしょうか? FlashではなくCGIの知識が必要ですね・・ ありがとうございました。

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

関連するQ&A