• ベストアンサー

画面全体にマスク

参考 http://ficc.jp/ こちらのページの最下部、「非公開作品集」をクリックしたときのように、ブラウザのサイズに関わらず画面全体にマスクをし、その上にFlashからHTMLを読み込んだオブジェクトをおきたいと思っています。 画面全体に対するマスクをかける方法について、何かヒントいただけないでしょうか?

  • Flash
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

マスクをかけるというのは, Flash の場合「マスクをかけて部分的に何かを表示させる」という意味になるので, ご質問で書かれている URL のものとは普通は逆の意味というか, 全然違った意味になります。 「マスクとは?」 http://www.1art.jp/flash/le/lesson9/lesson9-2.htm ですから,もし, 「Flash マスク 方法」などと検索エンジンで検索して探しても, おそらく書かれているもののヒントにはたどり着きません。 また, HTMLを読み込んだオブジェクトが表示されているわけではなく, 単に,ステージ全体の一番上のレイヤー,もしくは,一番上の深度に, ムービークリップを出没させているだけです。 あと, 「HTMLを読み込んだオブジェクト」という意味がわかりません。 したがって,その点は除いて, > ブラウザのサイズに関わらず画面全体にマスクをし、 という部分だけ回答します。 (「という部分だけ」と言ってもこの説明は長いです。) 私自身も何度か同様のご質問に回答したことがあるのですが, 原理はこれです↓。 「Flashの表示サイズを動的に変更させる方法」 http://oshiete1.goo.ne.jp/qa2479358.html  ↑教えて!goo ↓OKWave (同じです) http://okwave.jp/qa2479358.html 上のURLでは, もっと詳細に色々な場所にムービークリップを配置する方法を書いていますが, 今回の件では全てが必要ではありません。 必要なのはこれだけです↓。  // ムービーの拡大・縮小をなしにする  Stage.scaleMode = "noScale"; これで, ブラウザの窓の大きさによって中身の大きさを変えないようにします。 それだけです。 そして, 物(ムービークリップ)を指定座標(真ん中)に配置&表示させるのです。 前置きは以上です。 ===================== それでは, 具体的なサンプル(本番ではありません)の作り方を説明します。 まず Flash で新規ドキュメントを作成して, 任意のフォルダに任意の名前で FLA ファイルを保存してください。 保存できましたら, ステージ上に 400×400px ほどの四角を 矩形ツール でステージ中央あたりに描いてください。 枠の線は要りません。 塗りの色は アルファ50%(半透明) くらいの黒が良いと思います。 半透明の黒い四角が描けましたら, その四角を選択して, 「修正」→「シンボルに変換」(または,右クリック→「シンボルに変換」)で, ムービークリップに変換します。 このときの基準点が大切で,基準点を中央にしてください。 「シンボルに変換」ダイアログのようす↓。 ////////////////////////////////////////////////////  名前(N):[ 任意の名前         ]  タイプ(T): ◎ ムービークリップ 基準点(R):□□□        ○ ボタン                 □■□        ○ グラフィック             □□□ //////////////////////////////////////////////////// ムービークリップに変換できましたら, さらにもう一度ムービークリップに変換します。 つまり, 親ムービークリップの中に子ムービークリップが入っているという, 入れ子状態のムービークリップを作ると言うことです。 このときの基準点も中央にしてください。 変換できましたら, その親ムービークリップを選択して, 下のプロパティインスペクタ(プロパティパネル)でインスタンス名を付けます。 インスタンス名は何でも良いのですが, この説明では 「Buttai」(物体) というインスタンス名を付けることにしておきます。 「Buttai」 は全て半角文字にしてください。 次に 「Buttai」 をダブルクリック(もしくは,右クリック→「同じ位置で編集」)して, 「Buttai」 内のタイムラインの編集に移ります。 「Buttai」 内のタイムラインは1フレーム1レイヤーになっているはずです  □ レイヤー 筆・・|●| ←黒半透明ムービークリップがある それを,3レイヤー20フレームにします↓。  □ レイヤー 筆・・|○         []|  □ レイヤー 筆・・|○         []|  □ レイヤー 筆・・|●///////////[]| 一番下の黒半透明ムービークリップがあるレイヤーのフレーム1を選択し, フレーム2にドラッグ&ドロップし, 下から2番目のレイヤーの フレーム2 を選択し,空白キーフレームを挿入し, いちばん上のレイヤーの最後のフレームも,空白キーフレームにしてください。  □ レイヤー 筆・・|○        []|○|  □ レイヤー 筆・・|○|○        []|  □ レイヤー 筆・・|○|●/////////[]| そしたら, ステージ上の半透明黒のムービークリップを選択して, 下のアクションパネルを表示させ, 白いスクリプトを書く部分に, -------------------- onClipEvent (load) { // ハンドカーソルにならないようにする this.useHandCursor = false; } // クリック時 on (release) { // 親ムービークリップをフレーム1に戻す this._parent.gotoAndStop(1); } -------------------- と書いてください。 これで,黒い半透明の部分をクリックしたときに, 最初のフレームに戻るボタン機能が付いたムービークリップができます。 2番目のレイヤーの フレーム2 を選択して, ステージ中央に,今度は 横×縦=200×100px ほどの, 黄色の塗の四角でも描いてください。アルファは不要です。 これは,ムービークリップの基準点を中央に合わせた方が良いので, 「ウィンドウ」→「整列」にチェックを入れて「整列パネル」を表示させて, 「ステージを基準」ボタンを押した状態で, 「整列」を「中央揃え(水平方向)」, 「分布」を「中央分布(垂直方向)」にして, きっちり四角の中央と,ムービークリップの基準点が等しくなるように配置してください。 配置できましたら, 黄色の四角を選択し,ムービークリップに変換します。 このときの基準点も中央にしてください。 変換できましたら, 一番下のレイヤーと2番目のレイヤーの最終フレームをキーフレームにしてください。  □ レイヤー 筆・・|○        []|○|  □ レイヤー 筆・・|○|●///////[]|●|  □ レイヤー 筆・・|○|●///////[]|●| そして, 一番下のレイヤーと2番目のレイヤーの フレーム2 を選択して, 下のプロパティインスペクタの真ん中上あたり,  トゥイーン:[なし     v] となっている部分を  トゥイーン:[モーション  v] にしてください。  □ レイヤー 筆・・|○        []|○|  □ レイヤー 筆・・|○|●>------>|●|  □ レイヤー 筆・・|○|●>------>|●| そして, フレーム2 にあるステージ上の半透明黒のムービークリップと黄色のムービークリップを選択し, 下のプロパティインスペクタで,  カラー:[アルファ   v] [0% ]v にしてください。 要は,アルファ0→アルファ100%のモーショントゥイーンを作ったわけです。 一番上のレイヤーは空白キーフレームを作っただけで何もしていませんね。 一番上のレイヤーの フレーム1 を選択して, 下のアクションパネルを表示させ, -------------------- this.stop(); -------------------- と書いてください(コピペ可)。 これでこのムービークリップは勝手に再生されません。 一番上のレイヤーの 最終フレーム の空白キーフレームにも, -------------------- this.stop(); -------------------- と書いてください。 すると,最終フレームで止まるアニメーションができます。 これで 「Buttai」 内の編集は終わりです。 「編集」→「ドキュメントの編集」で,メインムービーのタイムラインの編集に戻ります。 メインムービーのタイムラインに戻ると, ステージ中央辺りに ○ があるだけで, 他は何もないと思います。 この ○ が,さっきまで編集していたムービークリップ 「Buttai」 です。 この ○ も整列パネルで, 「ステージを基準」ボタンを押した状態で, 「整列」を「中央揃え(水平方向)」, 「分布」を「中央分布(垂直方向)」にして, ムービークリップの基準点がステージ中央に来るように配置してください。 メインムービーのタイムラインは1フレーム1レイヤーになっているはずです  □ レイヤー 筆・・|●| ← 「Buttai」 がある それを,3レイヤー1フレームにします。 また, 「Buttai」 があるレイヤーは真ん中の上から2番目に移動させてください。  □ レイヤー 筆・・|○|  □ レイヤー 筆・・|●|  □ レイヤー 筆・・|○| 移動できましたら, 一番下のレイヤーを選択して, 横×縦=100×20px ほどの小さめの四角い塗りを書いてください。 塗の色は適当で良いです。 その塗を選択して, 今度はボタンシンボルに変換してください。 基準点は中央でも中央でなくてもどこでもかまいません。 そのボタンに次のようなスクリプトを書きます。 -------------------- on (release) { // Buttai を再生させる _root.Buttai.play(); } -------------------- これでこのボタンをクリックすると, ムービークリップ Buttai の再生が開始されます。 ここまでできましたら, パブリッシュやムービープレビューで動作確認してみてください。 最初に書いた半透明の黒の塗が, 400×400px ほどですからステージ全体は覆いかぶさらないと思いますが, この半透明の黒の塗りを後からでも 2000×2000pxくらいに拡大してやれば良いだけです。 あとは, ステージのサイズが変わったときも, 常に同じサイズで黄色い四角がステージ中央に表示されれば良いわけです。 メインムービーのタイムラインの一番上のレイヤーのフレーム1の空白キーフレームを選択して, 次のように書いてください。 ------------------------------------ // ムービーの拡大・縮小をなしにする Stage.scaleMode = "noScale"; ------------------------------------ これでできあがりです。 最後に, 「ファイル」→「パブリッシュ設定」で,「HTML」タブを選択し,  サイズ:[ パーセント    v]      幅(W):   高さ(E):      [100 ] × [100 ] パーセント にしてパブリッシュし, HTML を開いて窓を拡大縮小させてみれば結果がわかると思います。 これらのことに関しましては次のURLが参考になると思います↓。 「表示に関する情報について」 http://hakuhin.hp.infoseek.co.jp/main/as/stage.html また, 黄色いムービークリップは黄色いムービークリップで, 何か on (release) {} などを書いたりすると, そのエリアでは黒半透明のボタンは無効になります。 その辺りは何か作ってみてください。 説明は長くなってしまいましたが,やることやスクリプトは簡単でしょう。 別に特別なことが必要なわけではありません。 上のレイヤーのムービークリップを stop(); や play(); gotoAndStop(); させているだけです。 たいていそんな物ですよ。 「質問者さまがおっしゃるところのマスク」 のようなものを出没させたいのでしたら, 素直にマスクのようなものを描いて出没させれば良いだけです。 黒い半透明が嫌でしたら,アルファ0 の全く透明な塗を用意して, その上に書かれているURLのように斜線をたくさん引いても良いです。 また, ダイアログのようなものを出没させたいのでしたら, 素直にダイアログのようなものを描いて出没させれば良いだけです。 Flash は極めて主観的ですし,思ったままに何でも作成できます。 大体以上です。 ======================= > FlashからHTMLを読み込んだオブジェクトをおきたい これの意味がわからなくて心の中に引っ掛かります。 Flash とは無関係なご質問,または, Flash は絡んでいても本体は Flash ではないご質問のように思うのですが...。 つまり,ひょっとして Flash ではなく, JavaScript の Lightbox に関することではないかと思ったのです。 違っていたらすみません。 一応 Lightbox に関する参考URLを書いておきます↓。 「Highslide JS-サムネール画像を拡大表示するスマートなjavascript」 http://weblibrary.s224.xrea.com/weblog/webdesign/javascript_high.html もしこれだと Flash と絡めるのは非常に厄介か,不可能なことだと思います。 不可能というのは, 仮にLightbox と Flash が共存できたとしても,できる環境が限られてしまう可能性があるということです。 例えば 「Windows限定の,IE限定の,JavaScript有効限定の,…… であれば表示可能」 みたいな感じになる可能性があります。 環境がかなり限られるのでしたら,不可能と同じだと言うことで,やめた方が良いと思います。

BAF5555
質問者

お礼

sassakun 様 ご回答ありがとうございました。 とても細かくご説明いただき、非常に参考になりました。 「マスク」と機能名としてではなく感覚的な意味で質問してしまい、ご迷惑をおかけしましたことをお詫びします。 >「HTMLを読み込んだオブジェクト」という意味がわかりません。 Flashのとあるオブジェクトの内容を、別ファイルであるHTMLから読み込む、というのを想定していたのですが、外部テキストの読み込み結果がHTML(と解釈して)表示できないという認識でよろしいでしょうか? つまり、外部のテキストを読み込んだ際に、<br>タグなどはそのまま表示されてしまうのであれば、様式を固定して、XMLなどを読み込む方がよいということになりますね。

その他の回答 (1)

noname#35109
noname#35109
回答No.2

#1です。 > Flashのとあるオブジェクトの内容を、 > 別ファイルであるHTMLから読み込む、 > というのを想定していたのですが、 そういうことですか。 Flash が表示されている HTML から何かを読み込む(例えば JPEG や 変数)のではなくて, 別ファイルの HTML ということですね。 HTML ファイルは基本的に無理です。 しかし,HTML のタグはある程度 Flash Player が解釈します。 結局,外部テキストファイルに  変数=値 の形でHTMLタグ入りのテキストデータを「値」として用意しておくと, ある程度は ダイナミックテキスト内 に HTMLモドキ の値を代入できます。 ダイナミックテクストのプロパティで, 「テキストを HTML としてレンダリング」ボタン ( <> ←こんなボタン) を押した状態にして, そのダイナミックテキストにタグ入りテキストデータを表示させるのです。 Flash のヘルプで,この辺から見られると,使用できるタグなどがわかります↓。 http://livedocs.macromedia.com/flash/8_jp/main/00001457.html テキストのロードは, 書かれていらっしゃる通り LoadVars クラスのメソッドで良いです。 簡単に書くと, 「my_dada.txt」というファイルに, ------------------------- mydata=aaaaa<br>bbbbb ------------------------- というデータを用意しておいて, LoadVarsクラスのメソッドで ダイナミックテキスト にその値を表示させるとき, 「HTMLとしてレンダリング」の設定をせすに, ダイナミックテキストのインスタンス名.text = 値 として,ダイナミックテキストに値を表示させると ダイナミックテキスト には, -------------------------- aaaaa<br>bbbbb -------------------------- と表示されてしまいますが, 「HTMLとしてレンダリング」の設定をして, ダイナミックテキストのインスタンス名.htmlText = 値 として,ダイナミックテキストに値を表示させると ダイナミックテキスト には, -------------------------- aaaaa bbbbb -------------------------- と表示されるのです。 普通の変数の値と,HTMLタグ入り値を表示させる違いはそこだけです。 この辺が参考になりますでしょうか↓。 「*TextFieldのHTMLで遊ぶ」 http://hima.chu.jp/flash/tips/textfield_html.htm 「TextFieldに<img>タグで画像が表示できない」 http://www.fumiononaka.com/TechNotes/Flash/FN0401001.html しかし, ご質問で書かれているマスクの件と, ダイナミックテキストを組み合わせるのは難しいですよ。 ダイナミックテキストにはアルファがかかりませんから, アルファの変化によって「だんだん出てくるダイアログ」みたいなものには使えません。 スパット出てスパット消えるダイナミックテキストなら使えます。 また,アルファではなく他の出し方ならなんとかなるかもしれません。 ご質問で書かれているURLも, テキスト入力のテキストフィールドを使用していますが, これにもアルファがかからないので, アルファが100になって,ダイアログが出きったところでテキストフィールドを出没させていますね。 それまでは単なる四角い枠だけを表示させています。 こういう工夫が必要になります。

BAF5555
質問者

お礼

sassakun 様 再度のご教示、重ね重ねありがとうございます。 テキストの表示につきましては、見せ方を工夫して違和感のない表現を探してみたいと思います。 (簡単に思いつくところではアルファグラデーションを持った画像をかぶせて、動かして下層にあるテキストを徐々に表示させるとか・・でしょうか) また他の事でご質問させていただくこともあると思いますが、もしお答えいただける機会があれば、宜しくお願い致します。 ありがとうございました。

関連するQ&A

  • フラッシュを掲示板に公開するには

    内容が少し特殊なのでどこに質問すればいいのかわからないので、ここに質問するか迷ったのですが・・。FlashMaker2(体験版)で作品を作ったので掲示板(2ちゃんねる)に公開したいのですがやりかたがサッパリわかりません。。SWFの作成というボタンを押して、SWFファイルを作成までできたんですが、、、。 (HTML DocumentというやつとShockwave Flash Objectという二つのやつがファイルに保存されました。HTML Documentのやつを開くと作った作品が流れ、Shockwave Flash Objectのやつを開くとこのプログラムからは開けません、とでます。しかしShockwave Flash Objectを消すとHTML Documentのやつが開けなくなってしまいます) それとこういう作品を公開すると自分の情報が外に漏れたりしてしまうのでしょうか? ご回答の程、宜しくお願い致します。

  • ブラウザ画面の大きさ

    お世話になります。 Windows XPですが、あるときからインターネットを開くとブラウザ画面が小さく出てしまいます。そのページからリンクなどをクリックしても小さく出ます。 上のバーをダブルクリックすれば全体画面になるのですが、最初から全体画面で表示させるにはどうしたらいいのでしょうか? よろしくお願いします。

  • FLASH マスクレイヤー

    FLASH超初心者です。 体験版をウィンドウズに入れて、1冊目の本を買って進めているところなのですが、早速つまづいてしまいました。 マスクレイヤーというところなのですが、本の手順は、 1 ムービーの背景色を指定 2 切りぬかれるレイヤーにオブジェクトを配置 3 レイヤーの追加をクリック 4 新しいレイヤーが作成される 5 マスクにするオブジェクトを作成 6 新しいレイヤーを右クリックしてマスクを選ぶ 7 下のレイヤーをマスクし ふたつのレイヤーが自動的にロック 8 上のレイヤーのオブジェクトで下のレイヤーがマスクされる 1 は、新規の画面の背景を変えて、 2 で、ファイヤワークスに保存してあった部屋の絵をステージに読みこみました。 3.4 レイヤーの追加をクリックして 5 は、読みこんだ部屋の絵に丸を書く・・・? 6 マスクを選ぶと・・・ 7 自動的にロック・・されません。 どこでつまづいているのでしょうか? 何だか長い割にはつたない説明で申し訳なく、 分かりにくかったら、初心者が陥りやすい間違えや勘違いも 合わせてあげていただけたら・・と思います。 よろしくお願いします。

  • flashの画面全体で表示

    はじめまして。 質問させてください。 flashで背景画像のみを画面いっぱいに表示して 他のムービクリップはブラウザの大きさに左右されずサイズと場所を固定したくて 下記のように記述しました。 ---------------------------------------------- bg_h = _root.bg._height/_root.bg._width; Stage.scaleMode = "noScale"; Stage.align = "TL"; function setPosition() { _root.bg._width = Stage.width; _root.bg._height = bg_h*_root.bg._width; _root.rogo._x = 10; _root.rogo._y = 10; } ls = new Object(); ls.onResize = setPosition; Stage.addListener(ls); ---------------------------------------------- 上記だとブラウザのサイズが縦長になってしまうと下に大きく白い余白が空いてしまいます。 "noBorder"の使った時のように比率の差が大きい方のサイズに合わせたいのですが どうすれば良いのかわかります。 ご存知の方がいらしたら教えて頂ければと思います。 よろしくお願い致します。

  • イラストレーターのクリッピングマスクについて

    イラストレーターCS2を使っています。複数の形の異なる画像を、同じ形・大きさのクリッピングマスクでマスクして、きれいに座標を揃えて等間隔に並べたいと思っています。 整列パネルのオブジェクトの整列で「水平方向中央に整列」をクリックすると、マスクする前の形の異なる画像の中心点で整列されてしまいます。 どうすれば、クリッピングマスクしたサイズの中心点で並べることができるでしょうか?

  • ブラウザの全画面背景画像を入れ替えるFLASHを作成したいと思うのです

    ブラウザの全画面背景画像を入れ替えるFLASHを作成したいと思うのですが、 FLASHについては初心者のため、やり方がいまいちわかりません。 http://kyoren2008.smt.jp/ こちらのサイトのような感じで背景画像がブラウザの画面いっぱいに入れ替わり、 しかもブラウザの大きさを変えても画像がその大きさに可変する。 また、あくまでFLASH部分は背景画像のみで、中の文字とかメニューとかはすべて HTMLで記述したいと思っています。 透過はtransparentで指定するのだとは思うのですが、このブラウザの大きさに追従して 画面いっぱいに、というのがどのようにすればいいのか・・・・ たぶん簡単なことだとは思うのですが、・・・・ よろしくお願いします。

  • iPadでブラウザをドラッグすると画面全体が動く

    iPadで画面内に収まっているページ(スクロースなし)でも ドラッグすると画面全体が動いてしまうのを止める方法ってありますか? iPadアプリにWebViewを埋め込んで画面を出しているので iPadの設定、HTML、アプリ側の処理 のいずれでも実装できるのでしたらOKです。 お分かりになる方ご教授お願いします

    • ベストアンサー
    • HTML
  • DOM,DHTMLをつかってFlash画面でクリックさせるには

    FlashでできているあるWebページがあり、VBscriptからそのFlashのオブジェクトをクリックしたいのですがどうすればいいのでしょうか。 Webページは、CreateObjectでIEを立ち上げて開いています。

  • ブラウザ画面全体のスクロールキャプチャー

    FireFOXで、ブラウザ画面全体のスクロールキャプチャーを以前「キャプチャーイット」で行っていましたが、FireFOX3.5以降のバージョンからその機能が無くなってしまいました。 ブラウザの表示部分だけではなく、ページ全体をスクロールするなどしてキャプチャできるフリーソフトや簡単な手法をご教授下さい。 また、まだ不明かもしれませんがFireFOX4にも対応できると嬉しいです。 どうぞ宜しくお願い致します。

  • 至急。ブラウザの画面全体を保存する方法

    事情で急いでます。 ブラウザの見ている画面の、一部分だけでなく、 ページ全体を、画像で保存したいのですが、 保存方法教えて下さい。 ソフトや、ウィンドウズの機能で可能でしょうか。 宜しくお願いします。

専門家に質問してみよう