2014-06-16 7 views
-1

mouseEnabled가 아닌 여러 요소가 클릭하려고하는 요소 위에있을 때 mouseEvents가 실행되지 않는 문제가 있습니다.mouseEnabled = false에서 중복 항목이 여러 개있을 때 MouseInput이 무시됩니다.

게임에서 저는 보드 게임 "위험"과 비슷한 보드를 가지고 있습니다. 그래서 나는 불규칙한 모양의 영토를 가지고 있습니다. 다음과 같이

내 시각적 장면은 다음과 같습니다

WorldMap은
플레이어가 소유 한 영토의 - 설정
--Territory
--- 지역 그래픽
--- 지역 모양

각 영토에는 두 개의 자식이 있으므로 그래픽은 PNG 그래픽이있는 MovieClip입니다. 이 MovieClip은 mouseEnabled 및 mouseChildren = false로 설정됩니다. 그것은 비트 맵이기 때문에 불규칙적 인 모양이 아닌 정사각형이되어야합니다.

는 이전에 나는 자리에 비트 맵을하지 않았고 단순히 서로 다른 모양을 클릭하여 각 지역을 선택할 수 있지만, 지금은 추가 자식으로 비트 맵을 추가 한 것으로, 각 영역은 명백한 사각형 경계 상자가 있습니다. 영토 모양을 클릭하면 영토가 예상대로 선택됩니다. 그러나 도형 바깥 쪽을 클릭 할 때 경계 상자 안쪽을 클릭하면 PNG를 클릭하지 않고 다른 영역의 기본 모양으로 이동하는 대신 아무런 일도 발생하지 않고 전체 마우스 입력이 무시됩니다.

마우스가 활성화되지 않은 2 개의 겹치는 PNG가 Flash에서 처리하기에는 너무 많은 것처럼 보입니까?

이 문제는 알려진 문제입니까? 내가 뭔가 잘못하고 있는거야? 해결 방법이 있습니까?

코드 샘플

public function Territory(a_TerritoryXML:XML) 
{ 
    var t_ClassReference:Class   = Main.Instance.LibTerritories.applicationDomain.getDefinition(a_TerritoryXML.tname) as Class; 
    m_TerritoryShape     = new t_ClassReference(); 
    m_TerritoryShape.x     = a_TerritoryXML.xPos; 
    m_TerritoryShape.y     = a_TerritoryXML.yPos; 
    m_TerritoryShape.mouseEnabled  = true; 
    m_TerritoryShape.mouseChildren  = true; 
    mouseEnabled      = false; 
    mouseChildren      = true; 
    t_ClassReference     = Main.Instance.LibTerritories.applicationDomain.getDefinition(a_TerritoryXML.tname + "Graphic") as Class; 
    var t_TerritoryGraphic:MovieClip = new t_ClassReference(); 
    t_TerritoryGraphic.x    = a_TerritoryXML.xPos; 
    t_TerritoryGraphic.y    = a_TerritoryXML.yPos; 
    t_TerritoryGraphic.mouseEnabled  = false; 
    t_TerritoryGraphic.mouseChildren = false; 
    this.addChild(t_Graphic); 
    this.addChildAt(m_TerritoryGraphic, 0); 
} 
+0

실제 소스 코드 공유. 원하는 방식대로 작동 할 수 있으므로이 문제는 항목을 배치하는 방법과 마우스 수신기를 연결하는 위치에 따라 달라질 수 있습니다. – BadFeelingAboutThis

+0

왜 그래픽이 도형 위에 겹쳐져 있는지 궁금 하지만요? - 모양에 의해 실제로는 'Shape'객체 (클릭 이벤트를받을 수 없음)가 아니라 Sprite 또는 MovieClip이라고 가정합니다. – BadFeelingAboutThis

+0

"Territory Shape"는 (Flash IDE에서) 벡터 모양이 수동으로 그려진 MovieClip입니다. – paup

답변

-1

때때로 mouseEnabled=false;는 충분하지, 또한 mouseChildren=false; 추가하려고합니다.

+0

내 코드 샘플에서 볼 수 있듯이 이미 그 사례가 있습니다 ... – paup

+0

해결책이이 사고 방식에있는 것처럼 보입니다. "Set of Territories"컨테이너를 mouseEnabled = false로 설정하는 것을 잊었습니다. 따라서이 사람은 클릭을 등록했습니다! – paup