アプリ版:「スタンプのみでお礼する」機能のリリースについて

FLASHを使い始めたばかりの初心者です。
会社のパソコンにある FLASH 5 を使っているのですが、
ムービーの書き出しをして .swf ファイルを作ってサーバーに
UPしました。
IE で表示させて 『 名前をつけて保存 』 をしても当然
.swf ファイルは保存されませんが、FF で保存をすると
.swf ファイルも保存されます。
ただ、普通はその .swf ファイルを開いても何も表示されませんが、
私が作った .swf ファイルは表示されてしまいます。
何か設定が必要なのでしょうか? 宜しくお願い致します。

A 回答 (1件)

何も表示させない方法は色々あります。




> 普通はその .swf ファイルを開いても何も表示されませんが

まずそうなる原因ですが,
これはおそらく(おそらくですよ),
表示させないためにそうしてあるのではなくて,
SWF に, 外部SWF や 外部JPEG や 外部テキスト などをロード&表示させる形をとっているファイルで,
親の SWF だけ保存しても,その 親SWF 内にロード&表示される中身がないため,
HD に保存した SWF に何も表示されないというものだと思います。

最近見る Flash はこの外部ファイルロード型がかなり多いです。
ファイルを分割した方が,一回にロードするデータを少なくできますし,
また,
外部ファイルの部品だけを修正すれば,元の 親SWF をさわることなく更新できますから,メンテナンスも容易になる場合が多いです。
また,PHP などと連携して,Flash の内部データを動的に扱うことも可能になります。

この件に関しましては,
「loadMovie」や「loadVariables」という単語(スクリプト)を,
ヘルプで探すか,ネットで検索すると色々な情報が見つかると思います。


また何も表示されない原因については次のようにも考えられます。

お持ちの Flash が 5 ということですから,
お持ちの Flash Player(スタンドアローン版) のバージョンも 5 のはずです。
一方,
ブラウザの Flash Player は,ネットからDLして,
Flash Player 8 とか 9 になっていると思います。
したがって,
ブラウザを通して SWF を見た場合は正常に見えるけど,
SWF をダブルクリックで スタンドアローン版 の Flash Player で開いた場合,
正常に見えない,もしくは全く見えないという現象が十分起こり得ます。
それが原因でその保存した .swf ファイルを開いても何も表示されないのかもしれません。



======================

以上の件は置いておいて,
外部ファイルをロードするのではなくて,SWF単品で見えなくするには,
ムービークリップオブジェクトの _url プロパティを使うと簡単にできると思います。

以下はその作成例です。


新規ドキュメントを作成して,
任意の場所に任意の名前を付けてそのドキュメントを保存してください。
この説明では 「C:\Flash\myMovie.fla」 を保存したとします。

そして,フレーム1 に,

------------------------
// _root の URL を出力
trace (_root._url);
------------------------

と書きます。
そして,「制御」→「ムービープレビュー(M)」をしてもらうと,
「myMovie.swf」が自動でパブリッシュされて表示され,

 file:///C|/Flash/myMovie.swf

が,出力パネルに出力されると思います。

ですから,この場合,
「URL がこの値にならなければ,SWF を非表示にする。」
というようなスクリプトを書けば,
SWF はこの URL 以外で非表示になります。


というわけで,次に進みます。

上で作成したファイルのステージ上に,
「青い丸」でも描いてください。

そして,
上記スクリプトを次のように書き換えます。

-----------------------------------------
//_url が file:///C|/Flash/myMovie.swf でない場合
if (_root._url != "file:///C|/Flash/myMovie.swf") {
// このムービーをストップ&非表示に
_root.stop();
_root._visible = false;
}
-----------------------------------------

そして,
「ファイル」→「パブリッシュ」してもらうと,
「C:\Flash」フォルダに,「myMovie.swf」がパブリッシュされますから,
この 「myMovie.swf」を開いて見てみてください。

ステージ上に描いた「青い丸」は表示されると思います。

しかし,
「myMovie.swf」を, 「C:\Flash」以外のフォルダにコピペして,
そのコピペした 「myMovie.swf」を開いてみると何も表示されないと思います。



原理はわかりますでしょうか?

実際は,上の if文の,
if (_root._url != "file:///C|/Flash/myMovie.swf")
この部分を,
if (_root._url != "アップするSWFのフルパス")
このようにすれば,
その SWF が保存されたとしても,
ローカルPCでは非表示になります。


ただし,
上のようなスクリプトを書くと,自分自身のローカルPCでも,
作成した SWF を見ることができなくなりますから,
作成が完了して,アップする前に上記スクリプトを書いて,
パブリッシュするような工夫をする必要があるとは思います。



~ 参考URL ~

Flashが置かれているURLを調べる
http://hakuhin.hp.infoseek.co.jp/main/as/system. …

FlashのあるURLを調べる(簡易不正コピープロテクト)
http://www.geocities.jp/myflashsouko/flash/index …
~最重要ポイントの引用~
> 小細工のプロテクトに拘るよりも、
> いい作品を作って多くの人に見てもらうことを考えるべき。
> 勝手に転載や、改造されても、
> 俺も有名になったなと笑い飛ばせるくらいの余裕を。



---その他の方法---

SWF を表示させるHTMLのタグに,
FlashVars などで 変数と値 を用意しておいて,
その FlashVars からの変数と値が SWF 内に送信されていないと,
その SWF を表示させないという方法もあります。

また,SWF ファイルを表示させるとき,
「…○○.swf?pass=password123456」 のようにしてアクセスしないと,
SWF を表示させないなどの方法もあります。

以上に様にローカルに保存した SWF に何も表示させない方法は色々あります。




---補足(重要)---

上にも書きましたが,
一般的には,著作権絡みの Flash を除いて,
「ローカルに保存したSWFを表示させない」ようにしてあるのではなくて,
色々な都合上(おもにロード系で),
「ローカルに保存したSWFだけでは表示できない」というものが大半だと思います。

基本的には「ローカルに保存したSWFを表示させない」というような努力は無駄ですから。

Web上にアップして公開した以上,
何らかの形で保存や分解や解析はできてしまいます。
上の方法も,
「ローカルに保存したSWFを "絶対に" 表示させない」というものではなく,
「簡易的に表示させない方法」=「表示させにくくする方法」だと思ってください。
Web上に公開した物のセキュリティはどうしてもアマくなります。
特に Flash ファイル自体のセキュリティはアマアマです。

Flash では作成したファイルに対しては,
何をしても,「家に鍵をかけた」 くらいのセキュリティにしかなりません。
どろぼうにとって 「家に鍵をかけた」 というセキュリティはほとんど意味を持たないでしょう。
単に「少し盗みにくくした」とか「盗むのに少し時間がかかるようにした」という程度のものです。
本当に盗みたい人がいれば,ガラスを切ってでも,壁に穴をあけてでも盗る物は盗ります。
作成した Flash のファイル自体のセキュリティも同じレベルです。

Flash は,
通信に対するセキュリティやウィルスなどに対するセキュリティに対しては強いですけどね。
SWFファイル自体は,保存も分解も解析も,極めて簡単にできるファイルです。
保存も分解も解析も簡単であれば,変造して再生するくらいのことも簡単です。

※Flash の 「ファイル」→「パブリッシュ設定」で,
  「Flash」タブを選択して,「読み込みプロテクト」に
  チェックを入れて SWF をパブリッシュしても無駄ですよ。
  「読み込みプロテクト」にチェックを入れた SWF は,
  単に Flash では読み込みができなくなるだけで,
  他社のソフトを使えば楽々に読みこめてしまいますし,
  分解も解析もできてしまいます。



ちなみに,分解や解析をしなくても,
上で作成して別フォルダにコピペしたものを,Flash Player 4で再生したら,
みごとに表示されていまいました(思った通りの結果でした!)。
(昔からFlashに携わっているので,古い Flash Player も持っているのです。)

こうなる原因は,セキュリティの問題ではなく,
Flash 5 で作成したスクリプトが FlashPlayer 4 では正常に働かなかったためです。
Flash Player 5 以上の FlashPlayer では大丈夫でしたよ。

Flash Player 4 でも通じるように,
スクリプトをさらに古くして,

-----------------------------------------
// _url が file:///C|/Flash/myMovie.swf でない場合
if (_url ne "file:///C|/Flash/myMovie.swf") {
// このムービーをストップ&透明に
stop ();
setProperty ("/", _alpha, 0);
}
-----------------------------------------

のようにして,
「パブリッシュ設定」で,「バージョン(V)」を Flash 4 にして SWF をパブリッシュしたら,
FlashPlayer4でもうまく行きました。
しかし,FlashPlayer3 で開かれたら……......

イタチごっこの無駄な努力ですね。
Flash Player 以外にも SWF の ActionScript が有効でない(有効にできない) SWF を表示させるソフトは出ています。
完璧なセキュリティは,いくら頑張っても無理です。
そういうつもりで Web公開 しましょう。
見せたくない盗られたくない物はアップしないことです。それが一番のセキュリティです。
(その前に作らないことが最大のセキュリティですが。)
    • good
    • 0
この回答へのお礼

とてもご丁寧に、詳しく教えていただきましてありがとうございます。
休み明けにやってみようと思います。
また何かありましたら宜しくお願い致します。

お礼日時:2007/03/23 22:34

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