2010-03-27 2 views
2

Flash 개체와 HTML 요소가있는 HTML 문서가 있습니다. HTML 요소의 opacity CSS 속성을 1 미만의 값으로 설정하면 실제로 덮힌 Flash 개체가 마우스 이벤트를받습니다. 이 문제는 순수 HTML 요소로는 재현 할 수 없습니다. 또한 플래시는 호버 수 이벤트 만 수신하므로 레이어 아래를 클릭 할 수 없습니다.불투명도가 설정된 경우 Flash가 HTML 요소 아래에서 마우스 이벤트를받습니다.

온라인으로 demonstration of the problem을 넣었습니다.

Mac 및 Windows의 Firefox 3.6, Safari 4.0 및 Chrome 5.0에서이 동작이 발생합니다. Flash 플러그인 버전 10이 설치되었습니다.

버그 또는 정상적인 은 (는) 예상되는 동작입니까? 후자의 경우, 반투명 레이어로 덮여있을 때 플래시 수신 이벤트를 어떻게 방지 할 수 있습니까?

답변

-1

데모에서 볼 수 있듯이 Flash 객체는 마우스가 왼쪽 패널을 통과 할 때만 마우스 오버 이벤트를 유지합니다. 한 번 왼쪽 패널에서 플래시 객체는 더 이상 호버 이벤트를받지 않습니다. 그렇지 않으면 " 예를 들어 "브라질"팝업은 계속 마우스를 따라갈 것입니다. 마우스가 제대로 플래시 객체를 "남겨 두지"않았기 때문에이 동작이 나타나는 것 같습니다. 내가 묻는 것에 신경 쓰지 않는다면 왜 왜 왼쪽 패널에서지도가 부분적으로 가려 졌습니까?

+0

지도가 핵심 구성 요소 인 인터페이스가 있으므로 맵 위에 토글 제어 패널을 제공했습니다. 반투명은 필수 기능은 아니지만 UX를 향상시킵니다. –

0

무대에서 Event.MOUSE_LEAVE을 (를) 들어보십시오. 마우스가 무대를 떠날 때마다 해고 될 것입니다 (다른 html 요소 위로 마우스를 가져 가면 트리거됩니다). 그런 다음 가져 오지 않아야하는 항목에서 마우스 오버 상태를 제거 할 수 있습니다.

+0

플래시 무비에 액세스 할 수 없습니다. 제 3 자 구성 요소입니다. –

1

매우 흥미로운 이슈, 나는 광범위하게 검색하여 이것에 대한 Actionscript 솔루션만을 발견했습니다. 나는 심지어이 페이지를 지역적으로 재현하고 플래시와 패널 사이에 벽돌 벽을 제외한 모든 것을 놓으려고 시도했지만 플래시는 항상 마우스 이벤트에 응답합니다. 불행히도 내가 가진 유일한 해결책은 일단 패널이 위에 나타나면 플래시로 이미지를 옮기거나 교체하는 것입니다. 전체지도를 다루는 패널이 필요하기를 바랍니다. 플래시의 일부를 미끄러지 듯 움직이는 탐색 장치가 있다면 이미지로 바꾸는 것이 회피적일 수 있습니다. 여기에 jquery를 사용하는 코드가 있습니다.이 코드는 내가 생각할 수있는 최상의 코드입니다.하지만 패널에서 나올 때 깜박 거림이 있습니다.

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $(".panel").mouseover(function() { 
     $("#google-visualization-geomap-0").css({'position' : 'absolute', 'left' : '-999em'}); 
    }); 
    $(".panel").mouseout(function() { 
     $("#google-visualization-geomap-0").css({'position' : 'static', 'left' : '0'}); 
    }); 
}); 
</script> 

희망이 조금 도움이됩니다.

+0

탐색 패널이 부분적으로지도를 덮습니다. 문제를 실험하고이 문제를 해결하는 데 시간을내어 주셔서 감사합니다. –

0

gravityone, 내가 프로그램 플래시 조각을 중복 드롭 다운 메뉴와 같은 문제에 봉착

. ActionScript 솔루션을 발견 한 것 같습니다. 모든 입력을 부탁드립니다.

나는 청취자 Event.MOUSE_LEAVE을 테스트했지만, 불행히도 swf에서 마우스가 swf를 통해있을 때 메뉴를 넘는 것을 구분하지 않습니다.

감사합니다.


는 업데이트 :

그래서 나는 효과가 실행 된 이상은 롤의 전에에 javscript 변수를 확인하기 위해 내 플래시 조각을 강제로이 문제를 해결했다.

여기 SWF /의 JS 통신 모양에 대한 자세한 내용은 : 나는 그것을 적용하는 방법을 link text

또는 볼을 아래에 보이는 :

ActionScript를 :

import flash.external.ExternalInterface; 
private var navOver:Boolean; 
private function onPackOver(event:MouseEvent){ 
    //Establish if Nav is on by grabbing js variable. 
    navOver = ExternalInterface.call("navOnStatus"); 
    if (!navOver){ 
    // mouse over effects 
    } 
} 

자바 스크립트 :

//navOn Variable is changed to true when mouse if over the nav, and false when it is not; 
var navOn = false; 
function navOnStatus(){ 
return navOn; 
} 
+0

원래 질문과는 아무런 관련이 없습니다. –

+0

원래 질문 : "반투명 레이어로 덮여있을 때 플래시 수신 이벤트를 방지하려면 어떻게해야합니까?" 위의 해결 방법으로 질문에 대한 답변을 얻을 수 있습니다. Flash Player를 수정하지는 않지만 JS/AS 통합과 관련된 해결 방법이므로 마우스가 다른 요소 위에있을 때 플래시 조각이 이벤트를 처리 할 수 ​​없습니다. – Ecksley

0

어쩌면 그렇게 생각해야합니다. 브라우저 버그가 발생했습니다.

Flash Player 10.1 r53이 설치된 Google Chrome 5.0.375.99 및 Apple Safari 5.0 (6533.16)의 경우 더 이상이 문제가 발생하지 않습니다. 예상되는 동작이 발생합니다. 즉, 반투명 레이어 뒤의 플래시 객체가 마우스 이벤트에 응답하지 않습니다.

관련 문제