質問ページ / 183


質問ページ / 183

質問ページ/183

概要ASでマスク処理
投稿者SXL?
状態質問
カテゴリーActionScript
投稿日2007-02-26 (月) 19:11:19
バージョン1.24

質問内容

AS初心者です。本格的にAS組むのはこれが初めてです。 (普段はDelphiとC#がメインのアマチュアプログラマをやっています)

ドキュメントを読んでも概念がいまいち掴めないので質問させて下さい。

現在、スプライト上で外部の画像を読み込み、マスクの形に切り抜いて表示させようとしているのですが、どうもうまくいきません。 マスクが適用されないようです。

ソースコードの一部抜粋は以下の通りです。

//ここから
var mc = this.createEmptyMovieClip("mc",0);
mc.beginFill(0x000000);
mc.lineStyle();  
//ここでマスクの描画をする
mc.endFill();
mc.cacheAsBitmap = true;//これをすると8以降でアルファマスクになるらしいので
this.setMask(mc);//mcをマスクに設定
this.loadMovie("http://hogehoge/gehogeho.jpg");//画像を取得
//ここまで

・まず、this.createEmptyMovieClip?("mc",0);で既に表示しているレイヤーをマスクに設定している時点で問題があるのでしょうか。(かといって単にnew MovieClip?();ではうまく行きませんが)

・それとも単純にインデックス順序の指定がおかしいだけでしょうか。

・本当はthisにマスクを適用するのではなく、mc2などに画像を読み込み、それにマスクを適用したいと思っています。その上で、mc3などに額縁を描画し、結果としてスプライトが一つの「四角ではない額縁に入った写真」となるようにしたいのです。

上記のコードになる前に一度そのように組んでみたのですが、こちらも同様にうまくいきませんでした。

よろしくお願いします。

回答

  • 画像を読み込み終わる前にマスクの設定をおこなっているせいで、マスクがかからないんだと思います。読み込み終わってからマスクしてみてください(onLoadInit?などを使用して読み込み終了を待ってsetMaskをする)。それから、cacheAsBitmap? = trueも画像を読み込み終わってから設定する必要があると思います。 -- 2007-05-20 (日) 10:39:34