- 締切済み
ぼかし
動いているムービークリップを 画面のある特定の領域に入ったらぼかしをいれて、 領域から外れたらぼかしをなくす処理をいれたいのですが、 どのすればできますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
Flash の バージョンを書かれていませんが, Flash 8(Basic 8,Professional 8 どちらでもOK)でしたら, Flash だけで可能ですよ。 以下に書く内容は Flash MX 2004 以下では無理です。 まず「ぼかし」↓ フィルタについて(Flash 8以降) ブラーフィルタを使用したい http://hakuhin.hp.infoseek.co.jp/main/as/filter.html#FILTER_00 そして,「当たり判定」↓ 当たり判定について インスタンス同士で当たり判定を取る http://hakuhin.hp.infoseek.co.jp/main/as/hittest.html#HITTEST_01 ====================== 参考URLだけでは不足かもしれませんので, 具体的で簡単な例を書きます。 Flash を起動させて, 新規ドキュメントを作成し, ステージ上にちょっと大きめの四角い塗りが入った長方形を描きます。 塗りの色は何でもかまいません。 この大きめの長方形をご質問で書かれている "領域" ということにします。 その大きめの長方形を選択し, ムービークリップに変換して 例えば 「area_mc」 というインスタンス名を付けます。 ↓ステージ □□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□ ムービークリップ □□□□□□□■■■■■■■← area_mc □□□□□□□■■■■■■■□ □□□□□□□■■■■■■■□ □□□□□□□■■■■■■■□ □□□□□□□□□□□□□□□ そして, area_mc のあるレイヤーの上に 新規レイヤーを追加して, そのレイヤーには,小さめの四角い塗りの入った長方形を用意します。 この塗りの色も何でも良いです。 またインスタンス名も不要です。 ↓ステージ □□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□ ムービークリップ □□□□□□□■■■■■■■← area_mc □□□□□□□■■■■■■■□ □回回回□□□■■■■■■■□ □回回回□□□■■■■■■■□ □□↑□□□□□□□□□□□□ 小さめのムービークリップ そして, 小さめのムービークリップを選択して, 下のアクションパネルに次のようなスクリプトを書きます。 コピペ可能です↓。 -------------------------------------------- // このムービークリップが表示されたときの処理 onClipEvent (load) { // BlurFilter インスタンス bokashi の作成 var bokashi = new flash.filters.BlurFilter(); // 水平方向のぼかし量を設定 bokashi.blurX = 10; // 垂直方向のぼかし量を設定 bokashi.blurY = 10; } on (press) { // このムービークリップをドラッグ開始 this.startDrag(); } on (release) { // このムービークリップのドラッグ終了 this.stopDrag(); } // 1フレーム進む時間ごとに毎回実行 onClipEvent (enterFrame) { // もし area_mc にヒットしていれば if (this.hitTest(_root.area_mc)) { // このムービークリップにぼかしフィルターをかける this.filters = new Array(bokashi); } else { // ヒットしていなければ フィルター を解除 this.filters = null; } } -------------------------------------------- そして, 「制御」→「ムービープレビュー」で, 完成したものを見てみてください。 小さめのムービークリップはドラッグできるはずです。 ドラッグして大きい area_mc に接触するとぼけると思います。 繰り返しますが, Flash 8 以上をお持ちの場合です。 またパブリッシュする場合も, Flash Player 8 以上の SWF をパブリッシュする必要があります。
実際にやってないので、ぼかしで見えるのかどうかは未確認ですが・・・。 Photoshop等で、ぼかしようのフィルター用画像を作って、PNG形式で書き出し、それをFlashのムービーに重ねて配置して、アクションスクリプトで領域外ならアルファを0にして透明にしておき、領域に入ったら、アルファを100%になるように設定する。 問題は、フィルター用の画像をどうやって作るかだと思います。 ・・・と考えたのですが、実際ぼかした画像を重ねてもぼけては見えなさそうですね。 そこで、もう一案。 ちょっと手間はかかりますが、動かすムービークリップを、通常版と、ぼかした版の2つ用意し、重ねて配置しておいて、領域の内外で片方がアルファ100の時はもう一方はアルファ0、領域を外れたら逆にするなんてのはいかがでしょうか。 あくまでも机上の空論ですので、参考までに。