• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グラデーションでのマスクについて)

グラデーションでのマスクについて

このQ&Aのポイント
  • グラデーションでマスクを付ける方法について質問します。
  • スクリプトを使用してマスクを適用した際に、マスクが効かない問題が発生しました。
  • 別のSWFファイルでマスクを適用すると、グラデーションが見えてしまい、マスクが効きませんでした。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です > やはり下のレイヤーclipを動かす事は出来ないみたいです・・・。 なるほど,そうなりますね。 同様の現象を確認しました。 それはよくわかりません。 Adobe のプログラマの人などに訊くなどしないとわからないかもしれません。 --- --- --- --- --- --- しかし,普通そのようなことは気付かないとは思うのです。 なぜなら, ActionScript 2.0 以下のままで Flash Player 9 の SWF をパブリッシュしようとなど通常は思わないからです。 閲覧ユーザの数を減らすという 「デメリット」 ならありますが, 「メリット」 の方がぜんぜん(ほぼ 0 に近く)ありません。 Flash Player 9 の SWF をパブリッシュする意味は 通常,ActionScript 3.0 を使う場合です。 ActionScript 3.0 では mask という言葉がプロパティに存在するので 変数名やインスタンス名に使えません。 マスクのムービークリップのインスタンス名を「msk」などに変更して パブリッシュ設定を ActionScript 3.0 にして, スクリプトを次のように変更すれば動作しますよ。 ------------------------------- msk.cacheAsBitmap = true; clip.cacheAsBitmap = true; clip.mask = msk; ------------------------------- 直接的な回答でなくて申し訳ありませんが...。

vescent
質問者

お礼

特にActionScript3を使用していたわけでもないので、何の考えもなしに2で作製してましたが、3にして上記の様に書き換えたら動作しました! 直接的な回答になっています、謎が知りたかったというより動作したらよかったので・・・ ですが、少し勉強になりました。ありがとうございました!

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

setMask() のあるべき構文は  MCインスタンス.setMask(MCインスタンス); が正解でしょう。 書かれていらっしゃるスクリプトやそのサンプルは  MCインスタンス.setMask("MCインスタンス名文字列"); になっています。 だから動作が変になるのだと思います。 ------ ------ ------ Flash Player 8 用の SWF をパブリッシュした場合 なおかつ その SWF をロードしない場合, setMask("MCインスタンス名文字列"); で良いと言うわけではないのですが, "MCインスタンス名文字列" が MCインスタンス と読み替えられてしまうため,無事に動作してしまうのだと思います。 Flash Player 8 用の SWF をパブリッシュした場合 なおかつ その SWF を他からロード "した" 場合, setMask("MCインスタンス名文字列"); だと 文字列は,あくまでも文字列であって,パスも階層も意味しないものとなるので,  _root の "MCインスタンス名文字列" = _root の MCインスタンス と読み替えられてしまうのでマスクがうまくかからないのだと思います。 ------ ------ ------ Flash Player 9 用の SWF をパブリッシュした場合は, おそらく上の「読み替えられる」という バグ(?) が解消されたので, 無事動作しなくなるのだと思います。 結局, setMask("MCインスタンス名文字列"); で動くのが不正常(バグと言うべき???)だと思います。

vescent
質問者

お礼

回答ありがとうございます。 最初上手くいかなかった所、サンプルのものが("")で括られていて動作していたので、それが正解かと思いました。""を外してみたらマスクは上手く効いたのですが(Player9でも)、やはり下のレイヤーclipを動かす事は出来ないみたいです・・・。