2011-02-15 4 views
0

좋아, 나는 복잡한 일들을 피하기 위해 나의 모범을 무너 뜨 렸습니다.As3 버튼이 비활성화됩니다.

첫 번째 프레임에는 '컨테이너'라는 영화 클립이 있으며 두 개의 버튼이 있습니다. MOUSE_OVER/OUT은 버튼 무비 클립 안에있는 애니메이션 용이며 stop(); (동영상 클립 버튼 내부). 시피

stop(); 


container.addEventListener(MouseEvent.CLICK, clickCommand); 

function clickCommand(event:MouseEvent):void{ 
    if(event.target.name == "button1"){ 
     container.alpha = 0; 
     gotoAndStop(15); 
    } 
     if(event.target.name == "button2"){ 
     container.alpha = 0; 
     gotoAndStop(16); 
    } 
} 


container.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand); 

function rollOverCommand(event:MouseEvent):void{ 
    if(event.target.name == "button1"){ 
     event.target.gotoAndPlay(2); 

} 
    if(event.target.name == "button2"){ 
     event.target.gotoAndPlay(2); 
    } 

} 



container.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand); 

function rollOutCommand(event:MouseEvent):void{ 
    if(event.target.name == "button1"){ 
     event.target.gotoAndPlay(11); 
    } 
    if(event.target.name == "button2"){ 
     event.target.gotoAndPlay(11); 
    } 
} 

는 I 사용자가 eigher 버튼을 클릭 할 때, 사용자가 촬상 여부에 따라, 해당 프레임의 타임 라인 홉이 컨테이너가 0 알파 할 버튼 1 (frame15) 또는 버튼 (2) (프레임 16).

잘 작동합니다. 문제는 container2라는 무비 클립에있는이 프레임에 새 메뉴가 있다는 것입니다.이 방법을 사용하면 MOUSEOVER/OUT/CLICK가 갑자기 작동하지 않습니다. 나는 장애인들이 있습니다 놓여있다

stop(); 

    container2.addEventListener(MouseEvent.CLICK, clickCommand2); 

function clickCommand2(event:MouseEvent):void 
{ 
    if (event.target.parent.name == "main1") 
    { 
     event.target.root.gotoAndPlay(13); 
     trace(event.target.parent.name); 
    } 
    else if (event.target.parent.name == "main2") 
    { 
     trace(event.target.parent.name); 
     event.target.root.gotoAndStop(14); 
    } 
} 


container2.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand2); 

function rollOverCommand2(event:MouseEvent):void 
{ 
    if (event.target.name == "main1","main2") 
    { 
     event.target.parent.gotoAndPlay(16); 

    } 
} 



container2.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand2); 

function rollOutCommand2(event:MouseEvent):void 
{ 
    if (event.target.name == "main1","main2") 
    { 

     event.target.parent.gotoAndPlay(21); 

    } 
} 

그래서 내가 원하는 프레임을 얻을 수 있지만, 새로운 버튼 (메인 1, 메인 2) : 여기에 자신의 코드입니다.

청취자를 제거하지 않았기 때문입니까? 내가 잘못된 방향으로가는거야?

미리 감사드립니다. 매우 감사드립니다.

+0

커뮤니티에 오신 것을 환영합니다. 이전 질문을 검토하고 가장 적합한 답변 옆의 체크 표시를 선택하십시오. – zzzzBov

답변

1

코드가 별도의 AS 파일에 추가되지 않고 actions에 추가되었다고 가정합니다.

몇 가지 제안 사항. 버튼이 전체 타임 라인에 걸쳐 이동하지 않는 경우 새 키 프레임이없는 자체 레이어에 있는지 확인하십시오. 동일한 인스턴스가 유지되고 이벤트 리스너가 제대로 작동해야합니다.

버튼이 다른 인스턴스 인 경우 이동하는 키 프레임에서 이벤트 리스너를 리 바인드해야합니다.

언제든지 actions을 사용하여 액션 스크립트 코드를 관리하지 마십시오. 코드를 외부 AS 파일에두면 코드 중복을 크게 줄일 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 예. 내 코드가 자체 레이어에 있습니다. 지금부터 외부에서 추가 할 것입니다. 팁을 주셔서 감사합니다! 내 첫 번째 버튼 세트 (button1, button2)는 프레임 1에서 프레임 1 ~ 11에 있으며 두 번째 세트 (main1, main2)는 프레임 12에서 시작하는 자체 레이어에 있으며 코드는 on 두 버튼의 코드는 같은 레이어에 있습니다. 왜 이런 일이 벌어지고 있는지에 대한 생각은? –

관련 문제