2015-02-04 5 views
0

저는 Flash CS6, AS3을 사용하여 프로젝트 용 버튼을 만듭니다. 아래 코드는컴파일러/출력 오류 없음에도 불구하고 Flash CS6 버튼이 작동하지 않습니다.

Intro_btn.addEventListener(MouseEvent.MOUSE_DOWN, Intro_func); 
function Intro_func(event:MouseEvent):void { 
    gotoAndStop("Intro"); 
} 

출력 및 컴파일러 패널에서 실행할 때 오류가 나타나지 않으며 디버거를 통해 실행해도 오류가 발생합니다. 또한 다섯 개의 다른 버튼에 대해 똑같은 코드를 사용했으며 아무런 문제없이 작동합니다. 제발 누군가 내 코드에 문제가 있다고 말할 수 있습니까 ???

+0

수 있습니다. 당신은 틀림없이'Intro'라는 프레임을 가지고 있습니까? 이 코드가 올바르게 실행 되었습니까 (이벤트 리스너가 연결되어 있습니까?)? 버튼의 맨 위에 아무것도 놓여 있지 않습니까 (완전히 투명해도)? – Marty

+0

예, 'Intro'라고 표시된 프레임이 있습니다. 나는 문제가되어서는 안되는 두 번째 최상위 레이어 (최상위 레이어는 액션 스크립트 레이어)로 레이어를 이동했습니다. – 15leungjs1

+0

'Intro_func' 함수가'trace ('something');을 추가하여 실행되는지 확인하고'gotoAndPlay ("Intro");'를 사용하려고 시도하십시오. – akmozo

답변

0
내가 그러나 나는이 단계를 시도 할 것이다, 당신의 코드와 사용중인 버튼의 종류에 더 많은 정보를 알고 있어야합니다

: 1 .- 구성 요소 관리자에서 Button 구성 요소를 추가, 해당 인스턴스를 설정

이름을 지정하고 Click 이벤트에 같은 기능을 추가

newButton.addEventListener(MouseEvent.CLICK, Intro_func); 
    function Intro_func(event:MouseEvent):void { 
     trace("function executed"); 
     gotoAndStop("Intro"); 
} 

을 2.- 작업이 새로운 버튼으로 실행되는 경우 응용 프로그램 테스트를 실행합니다. 이 테스트가 통과되면 문제는 귀하의 버튼입니다. 당신의 버튼을

확인이 :

  • 체크 버튼의 기본 클래스 장애인/

  • 체크하여 버튼이 활성화 된 경우 (자신이 무비 클립 또는 버튼 클래스해야합니다).

  • 버튼 또는 해당 하위에 으로 설정 한 mouseEnabled 및 mouseChildren이 true로 설정되어 있는지 확인하십시오.

  • 체크 표시는 아트 보드의 버튼 상단에 다른 객체가 없거나 런타임에 코드로 추가됩니다.

  • 마지막으로 useHandCursor = true로 설정하는 것이 좋습니다. 이렇게하면 버튼 위로 이동할 때 마우스 포인터 화살표가 손 모양으로 바뀝니다 (버튼이 실제로 마우스와 상호 작용하는지 테스트하는 것입니다).

희망이 도움이됩니다.

+0

내 버튼 기본 클래스가 확실히 버튼입니다. 그것은 단순한 버튼입니다. 그래서'mousechildren'을 true로 설정하면 컴파일러 오류 1009가 발생합니다. 음 ... 버튼이 활성화 또는 비활성화되어 있는지 확인하는 방법을 모르지만 변경되지 않았습니다. 내 버튼의 기본 설정. 내 버튼이 두 번째로 높은 레이어에 있으며 (최상위 레이어는 AS3 임) 버튼 위에 버튼이 없습니다. 내가 볼 수있는 한 런타임에는 코드가 추가되지 않습니다. 나는 또한 'useHandCursor' 것을 시도하고, 마우스 포인터가 버튼 위로 움직일 때마다 마우스를 얻는다. 지금까지 모든 도움을 주셔서 감사합니다! :) – 15leungjs1

+0

다음은 내 프로젝트가 포함 된 Dropbox 폴더의 링크입니다. https://www.dropbox.com/sh/jq9h5jhkmwvqrqo/AAAeGFSvlF2yDzU3bP2zzri9a?dl=0 – 15leungjs1

0

지연에 대해 사과드립니다.하지만 해결책을 찾았습니다. 생각보다 쉽습니다. 프레임이 지연되었습니다.

Intro_btn 스크립트는 프레임 10에 있지만 프레임 9 ("Erhu"프레임 레이블)로 이동하면 이벤트 수신기를 설정하는 작업이 호출되지 않습니다.

객체가 자신의 프레임 만 생활 시간이 존재하면 10 프레임 (5)에서 개체가있는 경우, 그것은 단지 때문에 이전 또는 이후 프레임으로 이동, 거기에 존재합니다

또한 다음을 명심 (예 : 프레임 4와 11)은 관련 활동과 함께 메모리에있는 객체를 내부적으로 삭제합니다.

버튼 10을 프레임에 배치하고 MOUSE_DOWN 수신기를 추가했습니다. 그러나 프레임 0으로 돌아 가면 이 프레임에는 버튼이 없으므로 리스너와 함께 메모리에서 삭제되므로 프레임 0에서 다른 프레임으로 이동하면 버튼에 리스너가 연결되지 않습니다.

그래서 내 제안 :

1 .- 프레임 0으로 함수를 추가

function Intro_func(event:MouseEvent):void { 
    trace("function executed"); 
    gotoAndStop("Intro"); 
} 

2 .- 새 레이어를 만들 수 있습니다. 이 레이어에서 Intro_btn이있는 위치 (프레임 10)와 동일한 위치에 키 프레임을 추가하고이 레이어의 나머지 타임 라인을 빈 프레임 (키 프레임 없음)으로 채우고 마침내 동일한 레이어에서 수신기 10의 Intro_btn을 추가합니다. addEventListener. 이렇게하면 프레임 10의 모든 하위 프레임에 대해 작업을 수행 할 수 있습니다.

희망 사항으로 인해이 문제가 해결됩니다.

+0

답장을 보내 주셔서 감사합니다! 그러나, 슬프게도, 그것은 실제로 작동하지 않았고 아무런 오류도 나타나지 않았습니다. 프레임 1에 코드를 추가 한 다음 액션 스크립트 레이어 바로 아래에 레이어를 만들고 프레임 10을 키 프레임으로 변환하고 Intro_btn.addEventListener (MouseEvent.CLICK, Intro_func);를 추가했습니다. 내가 뭘 잘못하고 있니? – 15leungjs1