그래픽이 추가 된 버튼이 내려 가고있는 이유는 무엇입니까?
-
10-07-2019 - |
문제
안녕하세요 오늘 제 문제는 오늘 내 문제가 위아래로 미끄러지는 버튼 몇 개가 있다는 것입니다. 위쪽 상태에서 x 그래픽을 추가하여 AA 닫기 버튼을 상징합니다. 그러나 X 그래픽은 내 버튼 작업을 차단하는 것 같습니다.
(원천: flickr.com)
영화에 예가 있습니다 나는 >> 여기에서 작업하고있다 <. 여기에는 2 개의 영화가 있습니다. 큰 영화는 내가 말하는 것을 볼 수있는 파란색 탭을 클릭하면 X 버튼이 나타나지 만 X 영역을 클릭하면 버튼이 떨어지지 않습니다. 버튼을 뒤로 떨어 뜨리려면 파란색 버튼 영역을 클릭해야합니다.
이제 X 버튼을 기본적으로 동일한 방식으로 추가하는 작은 테스트 영화를 만들었습니다.
큰 영화의 내 코드는 다음과 같습니다 (트윈 코드를 숨겼으므로 너무 길지 않을 것입니다) :
function handleButtonClick(event:MouseEvent):void {
var button:MovieClip=event.target as MovieClip;
var id:Number=Number(button.name.split("button")[1]);
dispatchEvent(new CustomEvent(CustomEvent.PAUSE_MOVIE, {}));
if (! $btn1&&! $btn2) {
if (storeButton2==buttons[id]) {
closeTabX.x = buttons[1].width - (closeTabX.width + 10);
closeTabX.y=buttons[1].height/2-15;
buttons[1].addChild(closeTabX); // X added here
$btn2=true;
$btn1=false;
} else if (storeButton1 == buttons[id]) {
closeTabX.x = buttons[0].width - (closeTabX.width + 10);
closeTabX.y=buttons[0].height/2-15;
buttons[0].addChild(closeTabX); // X added here
$btn1=true;
$btn2=false;
}
} else if ($btn1 && !$btn2) {
if (storeButton2==buttons[id]) {
buttons[0].removeChild(closeTabX); // X removed here
buttons[1].addChild(closeTabX); // X added here
$btn2=true;
$btn1=false;
} else if (storeButton1 == buttons[id]) {
buttons[0].removeChild(closeTabX); // X removed here
$btn1=false;
}
} else if ($btn2 && !$btn1) {
if (storeButton2==buttons[id]) {
buttons[1].removeChild(closeTabX);
$btn2=false;
} else if (storeButton1 == buttons[id]) {
buttons[1].removeChild(closeTabX); // X removed here
buttons[0].addChild(closeTabX); // X added here
$btn1=true;
$btn2=false;
}
}
}
이제 기본 테스트 영화의 코드는 다음과 같습니다.
var blueButton:MovieClip;
var closeBtnX:MovieClip;
blueButton = new BlueButton;
blueButton.buttonMode = true;
closeBtnX = new CloseTabX;
closeBtnX.x = blueButton.width/2 - closeBtnX.width;
addChild(blueButton);
blueButton.addEventListener(MouseEvent.MOUSE_UP, specialClick);
function specialClick(event:MouseEvent):void
{
blueButton.addChild(closeBtnX); // X added here
blueButton.x = blueButton.x+10;
}
기본 예제에서 X를 클릭 할 수없는 이유를 알지 못하지만 탭을 닫으십시오. 그러나 내 작은 기본 영화에서 할 수 있습니까? 생각, 아이디어?
해결책
첫 번째 예에서 어떻게 'closetabx'를 인스턴스화하는 방법을 게시하지 않았는데, 작은 예제 (closetabx)와 같은 클래스입니까?
간단한 '수정'은 속성을 다음과 같이 설정하면 부모에게 마우스 이벤트를 차단하지 않는다는 것입니다.
closeTabX.mouseEnabled = false;
closeTabX.mouseChildren = false;
해당 클래스가 마우스 대상이 아닌 경우 해당 클래스의 인스턴스가 마우스 이벤트를 차단하는 것을 방지하기 위해 클래스 생성자에 이러한 속성을 설정할 수도 있습니다.