2013-04-14 2 views
1

에서 중복 함수 정의이 업 내 앞의 질문 I 대화 형 플래시 프로젝트를 만드는 중이라서 (Problems Scripting Multiple Buttons(nearly identical) in a single Action Script)1021 : 내 액션 스크립트

... 그것은이 17 개 분리 된 장면이에 따라 ...

입니다
  • 소개 장면
  • "Main_ 순서"
  • (15) 개별 타이틀 곡 페이지 ....
,691 내 첫 번째 문제는 "주 계열이"363,210

15 개 버튼을 가지고 있는데이 순서를 실행할 때 나는 ... 나는

TD_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    s_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ats_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    iyk_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    hms_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    tf_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    hd_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ld_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ll_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ts_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ipsy_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ysm_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    ihm_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    iss_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    tl_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
    function mouseDownHandler(event:MouseEvent):void { 
    var nameOfButton:String=event.currentTarget.name; 
    if (nameOfButton=="TD_g") { 
    gotoAndStop(1, "Tweedlee_Dee"); 
} else if (nameOfButton=="s_g") { 
    gotoAndStop(1, "Sincerely"); 
} else if (nameOfButton=="ats_g") { 
    gotoAndStop(1, "Ain’_that_a_shame"); 
} else if (nameOfButton=="iyk_g") { 
    gotoAndStop(1, "I_hear_you_knocking"); 
} else if (nameOfButton=="hms_g") { 
    gotoAndStop(1, "Hearts_made_of_stone"); 
} else if (nameOfButton=="tf_g") { 
    gotoAndStop(1, "Tutti_fruiti"); 
} else if (nameOfButton=="hd_g") { 
    gotoAndStop(1, "Hound_Dog"); 
} else if (nameOfButton=="ld_g") { 
    gotoAndStop(1, "Little_darlin"); 
} else if (nameOfButton=="ll_g") { 
    gotoAndStop(1, "Louie_Louie"); 
} else if (nameOfButton=="ts_g") { 
    gotoAndStop(1, "Twist_and_shout"); 
} else if (nameOfButton=="ipsy_g") { 
    gotoAndStop(1, "I_put_a_spell_on_you"); 
} else if (nameOfButton=="ysm_g") { 
    gotoAndStop(1, "You_shook_me"); 

} else if (nameOfButton=="ihm_g") { 
    gotoAndStop(1, "I_can_hear_music"); 

} else if (nameOfButton=="iss_g") { 
    gotoAndStop(1, "I_shot_the_sheriff"); 

} else if (nameOfButton=="tl_g") { 
    gotoAndStop(1, "Tainted_love"); 
} 
    } 

... 다음 코드를 사용하고있는 15 개 별도의 장면에 연결해야 난 .. 난 여전히 15 오류를 얻을 각 DownHandler의 예에 고유 한 # 다음) TD_g.addEventListener12(MouseEvent.MOUSE_DOWN, mouseDownHandler1); ...

감사를 포함하는 I는 ..._g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);을 변경하려고 다음 15 오류 모든 1021: Duplicate function definition. Source : function mouseDownHandler(event:MouseEvent):void {

를 얻을!

추신 : 나는이 액션 스크립트에 어딘가에 stop();을 삽입하여 애니메이션이이 장면에서 재생 된 후 사람들이 다음 장면으로 이동하는 대신 버튼을 탐색하고 클릭 할 수있는 기회를 갖기를 기대합니다. !

답변

0

저는 개인적으로 해시 맵/사전을 사용하여 이름/값 쌍을 처리하는 것을 선호합니다.

var buttonMap:Dictionary = new Dictionary(); 
buttonMap["TD_g"] = "Tweedlee_Dee"; 
buttonMap["s_g"] = "Sincerely"; 
buttonMap["ats_g"] = "Ain’_that_a_shame"; 
buttonMap["iyk_g"] = "I_hear_you_knocking"; 
buttonMap["hms_g"] = "Hearts_made_of_stone"; 
buttonMap["tf_g"] = "Tutti_fruiti"; 
buttonMap["hd_g"] = "Hound_Dog"; 
buttonMap["ld_g"] = "Little_darlin"; 
buttonMap["ll_g"] = "Louie_Louie"; 
buttonMap["ts_g"] = "Twist_and_shout"; 
buttonMap["ipsy_g"] = "I_put_a_spell_on_you"; 
buttonMap["ysm_g"] = "You_shook_me"; 
buttonMap["ihm_g"] = "I_can_hear_music"; 
buttonMap["iss_g"] = "I_shot_the_sheriff"; 
buttonMap["tl_g"] = "Tainted_love"; 

TD_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
s_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ats_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
iyk_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
hms_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
tf_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
hd_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ld_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ll_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ts_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ipsy_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ysm_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
ihm_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
iss_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
tl_g.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 

function mouseDownHandler(event:MouseEvent):void { 
    gotoAndStop(1, buttonMap[event.currentTarget.name]); 
} 

아직도 그 문제가 해결되지 않습니다 그래서 코드는 다음과 같이 기록 될 수있다. 오류는 코드의 다른 부분에 function mouseDownHandler이 정의되어 있다고 말합니다. 컴파일러 오류에서 오류가있는 행을 클릭하고 중복 코드를 찾으십시오. 지금 댓글을 달아서 왜 복사/붙여 넣기를 처음 시도했는지 파악하고 개선/수정하십시오. HTH

+0

나는 그것을 알아 낸다. 나는 15 개의 서로 다른 장면 (각 노래마다 하나씩)을 가지고 있고, 모두 다음의 코드가있는 버튼이 하나있다. stop(); "UniqueInstace".addEventListener (MouseEvent.MOUSE_DOWN, mouseDownHandler); function mouseDownHandler (event : MouseEvent) : void { \t gotoAndStop (525, "Main_Sequence"); }'애니메이션이 끝난 주 시퀀스의 지점으로 사람들을 다시 보내야하고 사람들이 클릭하여 개별 페이지를 방문 할 수 있습니다 ... 더 이상 작동하지 않으며 각각의 개별 장면 액션 스크립트 페이지들 ??? – user2278533

+0

http://postimg.org/image/arxegso2h/ 여기에 표시된 내용은 ... – user2278533

+0

@ user2278533 한 프레임에서 다른 프레임으로 코드를 복사/붙여 넣은 것처럼 보이고 인스턴스 이름이 변경되었지만 처리기 기능이 남아 있습니다. 액션 스크립트에서는 허용되지 않는 동일한 이름을 사용합니다. 여러 가지 옵션이 있습니다 : 1. 더럽고 각각의 버튼에 대한 개별 리스너를 갖지만 적어도 핸들러를 변경하십시오 : TD_g.addEventListener (MouseEvent.MOUSE_DOWN, TD_gMouseDownHandler); function TD_gMouseDownHandler (e : MouseEvent) : void {Tweedlee_Dee }} –