• ベストアンサー

グラデーションマスクのかけ方がうまくいきません。

こんばんわ、FLASH上であるMCにグラデーションマスクを適用して徐々に消えていくMCを作ろうと思い、元MCの上のレイヤーにマスク用のグラフィックを置いてマスクを適用しましたが、うまくいきません。 どううまくいかないかというと、マスクは適用されているのにグラデーションが適用されてない、、です。 グラデーションははじめフォトショップで作成してPNG-24で書き出しステージに配置してのですが、無理でした。 それで苦手なのですが、FLASH上でグラデーションを作成し適用したのですが、うまくいきませんでした。 何が原因でしょうか? もしお分かりになる方がおられましたらよろしくお願いいたします。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

おそらく、ムービークリップにグラデーションのかかった半透明効果を適用するといった、半透明マスクのことだと思います。 残念ながら、Flash のマスクレイヤーと MovieClip クラスの setMask メソッドで作るマスクに半透明マスク機能はありません。 マスク画像の色とアルファ情報はマスク処理の際に全て無視され、”マスク画像と重なっている部分だけを表示する”という単純なマスクとして機能します。 BitmapData クラスの copyChannel か copyPixels メソッドを利用すると、半透明マスクと似たようなことができます。 copyChannel を使う場合は、透過(アルファチャンネル)ありの BitmapData オブジェクトを2つ用意し、1つには画像、1つにはマスク画像を描画します。 マスク画像のアルファチャンネル( copyChannel メソッドの引数では 8 )をマスク対象のアルファチャンネルにコピーして表示すると、半透明マスクと同様の効果になります。 ちなみに、Flash で描画した画像だけでなく、アルファ情報を持っている PNG や透過 GIF を BitmapData オブジェクトに絵を取り込んで半透明マスクとして使うこともできます。 loadBitmap メソッドを使うと、リンケージを設定したシンボルをライブラリから直接 BitmapData オブジェクトに取り込めます。 BitmapData クラスはいろいろなことができて面白いのですが、大量のメモリを消費します。 用が済んだら dispose メソッドで使ったメモリを解放してください。 背景が単色の場合は、背景と同じ色でアルファだけのグラデーションを作って対象に重ねておいても、半透明マスクのような雰囲気が出ます。 汎用性はありませんけれど、こんなものでごまかす方法もあるということで、ご参考までに。

muku101681
質問者

お礼

そうだったんですか、、BitmapDataクラスで使われていたので、他でも普通に使えるのだと思っていました。 今回は幸いに背景が黒だったので単純に黒のグラデーションをかけてそれっぽくみせることにしました。 ありがとうございます

その他の回答 (1)

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.2

#1の方がおっしゃるように、マスクにグラデーションは適用できません。 代わりに元の画像をマスクと同形で切り、周りを「修正」「ソフトエッジ」でぼかし、マスクをかけるとそれなりの物が出来ますよ。^^ もう少し綺麗にしたければ、Fireworksでマスクをかけて物を読み込むという方法もあります。