質問: flashで作成した物を、ホームページで公開しているのですが、htmlソースから抜き取られているのか、無断転載に困っています。 あまり難しい設定は分からないので、何か簡単な方法で転載を防ぐ方法を教えてください。 理想は、パスワードで規制する方法です。 転載を許可しているサイトもあるので、パスワードを知っている方のみ、swfファイルをダウンロード?(転載)可能にする方法です。 説明がうまく出来ませんが、よろしくお願いします。
回答: Flashファイル(SWF) をダウンロードしたユーザーは, Flashファイル内を触ることはできないという条件だと思いますから, パスワードの設定は Flashファイル外 でする必要がありますよね。 1つの方法例ですが, 転載される方に SWF ファイル と同じフォルダに次のようなテキストファイルを置いてもらいます。 例えばメモ帳などテキストエディタで, word=12345 とだけ書いたもの(改行なし)を, 「pass.txt」 というファイル名で保存して置いてもらいます。 Flash の方では, フレーム2 以降に本編アニメやゲームなどを用意して, フレーム1 に次のような ActionScript を書きます。 -------------------------------------------- // フレーム1 でストップ stop(); // ムービー全体を非表示にする _root._visible = false; // LoadVarsクラスのインスタンス myLV を作成 myLV = new LoadVars(); // myLV に外部テキストがロードされたときの動作定義 myLV.onLoad = function(loadOK) { // ロードが成功して pass が 12345 のときのみ if (loadOK && myLV.word == "12345") { // フレーム2 以降に進める gotoAndPlay(2); // ムービー全体を表示する _root._visible = true; } }; // 外部テキスト pass.txt のロード myLV.load("pass.txt"); -------------------------------------------- そしてパブリッシュ。 パブリッシュした SWF と同じフォルダに, word=12345 と書いた 「pass.txt」 が存在しない限り Flash は動きませんし表示もされません。 簡易的にはこのような方法が考えられます。 ======================= しかし,上の物には実は弱点があります。 HugFla○h や FreeMoti○n などのソフトで SWF の内の ActionScript を覗かれてしまうと, このしくみがバレてしまって, ホイホイと word=12345 と書いた 「pass.txt」 を用意されてしまいます。 パスワードを設定せずに, MovieClip._url プロパティ を使うことによって, 指定した URL に 指定した名前の SWF をアップしたときのみ 再生&表示可能にする方法の方が, どちらかと言うとそう言った意味のセキュリティは高くなります。 -------------------------------------------- // フレーム1 でストップ stop(); // ムービー全体を非表示にする _root._visible = false; if (this._url == "指定したURL/指定したファイル名.swf") { // フレーム2 以降に進める gotoAndPlay(2); // ムービー全体を表示する _root._visible = true; } -------------------------------------------- これだと, 指定したURL に 指定したファイル名 でアップしたときのみでしか動作しませんから, ActionScript を覗かれたとしても大丈夫で, 勝手な場所に置いて動作させることは不可能になります。 ※ FreeMoti○n で SWF を変造されると, どちらにしても無意味ですけどね。 変造されることは抜きにすると, MovieClip._url プロパティ の方が安全です。