2011-01-24 2 views
0

나는 플래시 게임을 만들고 있는데, 당신의 캐릭터는 그 중 일부만 볼 수 있도록 무대 마스크를 사용합니다. 그러나 전체 무대가 가면을 원하지는 않습니다. "게임 영역"만 숨기고 싶습니다. 내 무대가 800x800이라고 상상해보십시오. 그러나 "게임"은 800x600의 상단 부분 만 차지합니다. 게임 공간 주변을 걷는 동안 채팅이나 정보 표시에 사용할 수있는 하단 200xx가 있습니다.무대의 일부를 선택적으로 마스크하는 방법은 무엇입니까?

문제는 내가 마스크를 설정하고 마스크/다/무대에 있습니다. "게임 영역"밖에있는 것이 있더라도 마스크 뒤에 숨어 있습니다. 그래서 제 질문은 플래시 응용 프로그램에서 "게임 영역"에서 마스크를 사용할 수 있으며 응용 프로그램의 다른 부분에 영향을 미치지 않을 수 있습니까? 마스크 위에 항목을 선택적으로 넣을 수 있습니까?

감사합니다.

편집 : 명확화. 내 게임은 GameScreen 개체 초기화 해에 의해 시작 : 그 전에

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

, 마스크 모두 검은 색을 만들을, 나는 GameScreen 뒤에 검은 사각형 넣어 다음 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); 

를, 그것은 생성 당신의 성격을 볼 수 있도록 "구멍".

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

이제 게임 설정을하고 마스크에 둥근 구멍이 생겨 플레이어가 캐릭터를 볼 수 있습니다. 그러나 Game Screen 개체가 초기화 될 때도 정보 표시 줄이 화면에 배치됩니다. 이 정보 표시 줄은 마스크에 의해 숨겨집니다. 플레이어는 그것을 볼 수 없습니다. 문제는이 막대 (및 나중에 추가 될 다른 구성 요소)가 항상 플레이어에게 표시되기를 바랍니다. 나는 플레이어와 함께 움직이기 때문에 단순히 마스크를 통해 "구멍"의 모양을 변경할 수 없습니다. 그렇다면 게임 영역을 숨기면서 정보 표시 줄을 플레이어가 볼 수있게하려면 어떻게해야합니까?

다시 한 번 감사드립니다!

+0

당신의 데모는 단지 녹색 화면을 보여 주며 각 타이틀은 그 값으로'[error]'를 보여줍니다. 마스크에 대한 블로그 게시물을 읽고 마스크하려는 객체에 적용해야하며 표시 목록의 해당 객체 앞에 배치해야합니다. – ocodo

답변

2

문맥에 맞는 대답을 얻으려면 마스크를 만드는 데 사용하는 코드 샘플을 제공해야합니다.

blog post은 AS3에서 프로그래밍 방식 마스크를 만드는 방법을 명확하게 설명합니다.

내가 수집 할 수있는 것으로부터 무대에 앉아서 마스크를 사용하면 유용한 다른 DisplayObject에 적용해야합니다. 이 시점에서 마스크는 DisplayObject으로 돌아 다니며 원하는대로 뒤로, 뒤로 이동할 수 있습니다.

또한 마스크 클립이 비어있는 경우 내용이 보이도록하기 위해 마스크 클립 전체가 가려져 적절한 모양이 그려 져야합니다. 내용이 해당 모양을 통해 표시됩니다.

+0

내 OP가 업데이트되었습니다. –

관련 문제