2011-12-06 4 views
0

배경 이미지를 드래그하여 이동할 수있는 vieport를 만들려고합니다. 내가 마우스 커서를 숨겨진 2 사용자 정의 사람과 그것을 대체 한 http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/fatChance.htmlTouch 이벤트가 다른 스프라이트 아래에서 시작되는 것을 방지하십시오.

참고 : 여기에

내가 무슨 짓을했는지입니다.

터치 이벤트 인 배경에 연결된 이벤트는 마우스가 해당 배경 앞에있는 스프라이트/동영상 클립 (원숭이 또는 통계) 위에 있더라도 시작됩니다. 그리고 stat는 gameLayer (원숭이와 bg 및 마우스 커서가있는 곳)에도 없습니다. 통계를 드래그하여 배경과 그 밖의 모든 것들이 팬으로 표시되는지 확인하십시오 (원하지 않음). 또한 마우스가 배경에 있지 않을 때 (즉, 원숭이 또는 통계 또는 앞으로있을 수있는 새로운 스프라이트에있을 때) 사용자 정의 커서를 제거하고 일반 커서를 표시해야합니다.

나는 플래시를 한동안 사용하지 않았으며, 처음에는 전문가가 아니지만, 발신자가 다른 물건에 묻혔는지 여부와 관계없이 이벤트가 정상적으로 작동하는 이유는 무엇입니까?

어떻게하면이 동작을 변경할 수 있습니까?

추신 : 위의 링크에서 .swf 소스를 첨부했습니다.

[편집] 또한이 작업과 관련이있는 경우 Starling을 내 GameLayer에 사용하고 있습니다.

[EDIT2] 나는 매우 분명하지 않은 것으로 보인다. 무대 만 드래그 가능 IFF 마우스가 배경에 직접 있습니다. 마우스와 배경 사이에 스프라이트가있을 때마다 커서를 변경하고 스프라이트와 상호 작용할 수 있도록 백그라운드 이벤트가 발생하지 않아야합니다.

+0

소스를 찾을 수 없습니까? –

+0

@Lars 마우스 오른쪽 버튼 클릭> 소스보기, 또는 여기로 이동 : http://students.info.uaic.ro/~tudor.berechet/0sandbox/aperture/science/testing/srcview/index.html – Spectraljump

+1

플래시, movieclips/sprite의 mouseChildren 및 mouseEnabled 속성으로 재생 해 보았습니까? – Frank

답변

2

이벤트가 원숭이를 통과하지 못하게하려면 stopPropagation()을 사용할 수 있습니다. 따라서 원숭이에 이벤트 리스너를 추가 (또는 업데이트)하고 e.stopPropagation()이 이벤트 처리기의 첫 번째 줄이되도록 편집하십시오.

private function _touchHandler(e:TouchEvent):void 
{ 
    e.stopPropagation(); 
    // any other code for touching your monkey :P ... 
} 

트랙에서 멈추고 싶은 다른 이벤트에 대해서도 동일한 작업을 수행하십시오.

+0

KreeK에게'stopPropagation()'을 언급 해 주셔서 감사합니다. 나는 "전파"라는 단어조차 생각조차 할 정도로 어리 석었다! :) 그것은 원숭이를 위해 잘 작동합니다. 그러나'stats'에 이상한 역할을합니다. 손 (가짜) 커서는 여전히'stats' 밑으로 움직이며 마우스 포인터는 보이지 않습니다. 그러나'stats'를 드래그하면 배경과 함께 드래그하지 않고 드래그합니다 (그리고 손은 뒤에 남습니다).그러나 일단 배경을 드래그하면'stats'를 다시 드래그하면 자신과 배경을 드래그하는 잘못된 방법이 다시 시작됩니다. 내 링크와 소스를 업데이트했습니다. 'Stats'는'StarlingIntro.as'에 있습니다. – Spectraljump