プロが教えるわが家の防犯対策術!

サイトの管理者以外(知識の無い人)でも
Flash内のテキストを外部から
書き換えられるようにしたいのです。

例えば、
テキストを表示するSWF以外に、
別ページのテキスト更新用フォームを設けて
そこから入力・送信する事で指定部分のテキストが書き換えられる、
というようなものを作りたいんですが

どのような方法を使えばよいのでしょうか?

当然ActionScriptのみでは解決出来ないと思うのですが
他の言語との連携はしたことが無く、疎いもので・・
詳しい方宜しくお願いします。

A 回答 (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 に対してしか正常に動作しないためです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/03 15:32

> 別ページのテキスト更新用フォームを設けて


> そこから入力・送信する事で指定部分のテキストが書き換えられる、

と言うことは、ファイル渡ししかないのでは、
CGIとかでフォームのテキストデータを書き込んで
そのテキストデータをSWFで読み込んで表示ですね。

もっと特殊なことがしてみたいですか・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

つまり、フォームでテキストファイルを編集し
それをFlash側で外部テキストとして読み込むという事ですか

よくレンタルサーバーで提供されている
ファイルマネージャのようなものでしょうか?

FlashではなくCGIの知識が必要ですね・・
ありがとうございました。

お礼日時:2008/02/19 16:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!