ステージ全体にマスクを
AS3.0を使ってステージのサイズと同じ長方形を描画し、それをマスクにすることでステージ外を表示しないようにしたいです。new Spriteで何とかなりそうだと思ったのですが、ステージと同じサイズの長方形を描く時点で挫折しました。
そこで、ムービークリップを作ってその中に長方形を描き、それを拡大(あるいは縮小)してからマスクにするのはどうだろうと考えましたが、ステージ全体にマスクをかける方法が分かりません。
アドバイス、よろしくお願いします。
(よりよい方法をご存知の方も、是非お願いします)
No.1ベストアンサー
- 回答日時:
ステージ(Stage / stage)にマスクをかけることはできません。
ヘルプ(ActionScript 3.0 言語およびコンポーネントリファレンス)で
mask を検索すると出て来る Stage のページにも
次のように書いてあります。
> 以下に示す継承プロパティは
> Stage オブジェクトに適用できません。
> これらを設定しようとすると、
> IllegalOperationError がスローされます。
> これらのプロパティは読み取ることはできますが、
> 設定することはできないため、
> 常にデフォルト値となります。
>
> ・ accessibilityProperties
> ・ alpha
> ・ blendMode
> ・ cacheAsBitmap
> ・ contextMenu
> ・ filters
> ・ focusRect
> ・ loaderInfo
> ・ mask
しかし ステージ(Stage/stage)ではなく,
root であればマスクをかけることはできます。
したがって 「いわゆるステージ全体」 にはマスクをかける ということはできると思います。
root とは,
この場合の Flash を起動して新規ドキュメントを作成したときに
すぐに見えるタイムライン(メインタイムライン)のことです。
その root のタイムラインのフレームに書くスクリプト例↓
----------------------------------
//マスクとなる矩形塗りを用意
var myMask:Shape = new Shape();
myMask.graphics.beginFill(0xFF0000);
myMask.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
myMask.graphics.endFill();
//マスクとなる矩形塗りをstageに配置
//(矩形の座標をstageの左上で固定するため)
stage.addChild(myMask);
//root(stage の子0) に myMask のマスクをセット
stage.getChildAt(0).mask = myMask;
//↓上記の代わりにこれでも良い
//root.mask = myMask;
//↓また これでも良い
//this.mask = myMask;
----------------------------------
上記スクリプトの内容は
stage の直下に Shape(シェイプ) を配置し
root に Shape のマスクをかけるということです。
つまり
スクリプトによってムービーの構造を次のように変えたということです。
・スクリプト実行前の構造↓
stage
└root ( stage.getChildAt(0) )
・スクリプト実行後の構造↓
stage
├myMask (矩形のシェイプ)
└root ( stage.getChildAt(0) )
↓そして↓
root に myMask のマスクをかける
まったくの勘違いをしていました。
あろうことか、rootが使えなくなったのかと思っていたのです^^;
正直なところ、ヘルプからの引用文は半分も理解できていませんが、方法自体は丁寧に解説して頂いたので良くわかりました。
大変丁寧に教えていただき、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
photoshopで書いた四角の枠の中...
-
ダブルクリックと2回クリックの...
-
画面の範囲選択
-
static関数がmapファイルに載ら...
-
変数に256文字以上のテキストを...
-
setIntervalの解除方法について
-
C言語でのマウスを移動とマウス...
-
楕円の軌道に傾斜をつける方法...
-
全てのテキストボックスをセル...
-
VBAで改行の入ったデータの正規...
-
pythonの画像の貼り付けについて
-
VB.NETでパラメータクエリを使...
-
RPG(AS400)の本、サイトってあ...
-
VB6.0 でメニューを作りたいん...
-
五芒星は、悪魔崇拝とどういう...
-
IP Address 入力フォームについて
-
C# chart controlの透過について
-
sendAndLoadでcgiからの戻り値...
-
インスタンスとポインタ
-
ボタンの上にカーソルを置いた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
photoshopで書いた四角の枠の中...
-
【Photoshop】レイヤー効果の境...
-
場面が移り変わるときかっこよ...
-
画面に描画した場合の深度はど...
-
インスタンスからはみ出ている...
-
サムネイル画像のマウスオーバ...
-
Flashコンテンツにz-indexは効...
-
FLASH マスクレイヤー
-
画像ロールイン・ロールアウト
-
植物が伸びていくようなアニメ...
-
目と言う文字を記号で作る
-
Pythonを使ってせん断応力図、...
-
python ボタンを押すと複数の関...
-
VBAで改行の入ったデータの正規...
-
【VB.NET】別Formのボタンが押...
-
別のアプリケーションのテキス...
-
VBScriptでMsgBoxのYesNoボック...
-
変数に256文字以上のテキストを...
-
テキストボックスの中身をリセ...
-
UWSCのBTN関数について。
おすすめ情報