2011-01-24 7 views
0

私はフラッシュゲームを作っています。あなたのキャラクターはその一部しか見ることができないように、私はステージ上のマスクをしています。しかし、私はステージ全体をマスクしたくない、私は "ゲームエリア"をマスクしたい。私のステージが800x800であると想像してください。しかし、「ゲーム」は上端の800×600しか占めていません。キャラクターがゲームエリアを歩き回っているときに、チャットや情報の表示に使用できる最下部に200ピクセルあります。ステージの一部を選択的にマスクする方法は?

問題は、私は自分のマスクをセットアップし、ステージ上の/すべて/マスクします。私が「ゲームエリア」の外に何かを持っていても、それはまだマスクの裏に隠れています。だから私の質問は、私のフラッシュアプ​​リケーションで、私は "ゲームエリア"で私のマスクを使用することができ、アプリケーションの他の部分には影響しませんでしたか?選択的にマスクの上にアイテムを置くことはできますか?

ありがとうございました!

編集:明瞭化。 GameScreenオブジェクトが初期化されると、それが作成し、

var rect:Shape = new Shape(); 
rect.graphics.lineStyle(1, 0x000000); 
rect.graphics.beginFill(0x000000); 
rect.graphics.drawRect(0,0,800,600); 
rect.graphics.endFill(); 
rect.y = 40; 
addChild(rect); 

/// 
/// Start the game 
/// 
game = new GameScreen(); 
game.y = 40; 
addChild(game); 

:私のゲームはGameScreenオブジェクトinitialzingによって開始されます。すべてのブラックマスクを作るために、その前に

game = new GameScreen(); //800 x 600. Declared as class variable 
game.y = 40; 
addChild(game); 

を、私はGameScreenの背後にある黒い長方形を置きますあなたのキャラクターを見ることができるように "穴"。

fogOfWar = new CircleMask(); 
       addChild(fogOfWar); 
       this.mask = fogOfWar; 
       fogOfWar.x = player.x; 
       fogOfWar.y = player.y; 

これでゲーム設定ができました。マスクに円形の穴があり、プレーヤーはキャラクターを見ることができます。ただし、Game Screenオブジェクトが初期化されるときにも、情報バーが画面上に配置されます。 この情報バーもマスクによって隠されます。プレーヤーはそれを見ることはできません。問題は、このバー(および他のコンポーネントを後で追加する)をいつでも見ることができるようにすることです。私は単純にマスクを通して "穴"の形を変えることはできません。それは、それがプレーヤーと一緒に動くからです。それでは、ゲームエリアを隠しながら、その情報バーをプレーヤーに見せる方法を教えてください。

もう一度ありがとうございます!

+0

あなたのデモは緑色の画面になり、各タイトルの値は '[エラー]'と表示されます。マスクについてのブログ記事を読んで、マスクするオブジェクトに適用する必要があります。そのオブジェクトを表示リストのオブジェクトの前に配置する必要があります。 – ocodo

答えて

2

状況に応じた回答を得るには、マスクの作成に使用しているコードのサンプルを提供する必要があります。

このblog postは、AS3でプログラムマスクを作成する方法を明確に説明しています。

私はあなたが集めることができるので、ステージ上に座っているマスクを持っているので、別のDisplayObjectに適用する必要があります。その時点で、マスクはそれに沿って移動しますDisplayObject、あなたは物事を、あなたの好きなものの後ろに置くことができます。

また、マスククリップが空白の場合、それがリンクされているDisplayObjectのすべてがマスクされ、コンテンツが表示されるように適切な図形を描く必要があります。コンテンツはその図形で表示されます。

+0

私のOPが更新されました。 –