2012-09-13 2 views
1

방금 ​​플래시를 사용하기 시작 했으므로 이것은 간단한 것일 수 있습니다. 내가 프로젝트를하고 있어요플래시 as3을 클릭하면 특정 동영상 클립이 표시됩니다.

내가지도가 있고지도상의 장소를 클릭 할 수 있고, 정보가 나타납니다했다. 모든 button_btn을 모든 info_mc에 연결할 수는 있지만 영원히 걸릴 것이므로 버튼 이름을 읽고 info_mc로 리디렉션하는 기능을 만들려고했습니다. 그러나 name_mc에서 name_info로 변경할 때 이름이 문자열로 변환되기 때문에 리디렉션되지 않습니다. 여기에 코드가 있습니다.

winterfell_info.visible = false; 

    map.winterfell_btn.doubleclickEnabled = true; 
    map.winterfell_btn.mouseChildren = doubleClickEnabled; 
    map.winterfell_btn.addEventListener(MouseEvent.DOUBLE_CLICK, show_clicked); 

    function show_clicked(e:MouseEvent):void{ 
     var get_name = e.currentTarget.name; 
     var open_info_string = get_name.slice(0,-3) + "info"; 
     //I've tried some things here but nothing is working for me. 
     var open_info = stage.getChildByName(open_info_string); 
     open_info.visible = true;  
    } 

도움을 주시면 감사하겠습니다.

그리고 네 그에게 왕좌의 게임에 대한지도 궁금합니다. 액션 스크립트는 대소 문자를 구분하기 때문에

+0

스테이지가 'open_info_string'의 부모인지 확인 하시겠습니까? 왜냐하면'getChildByName()'은 재귀 적이 지 않기 때문이다. 그리고 그것을 만들 때 "winterfell_info"라는 이름을 지정하셨습니까? '.name' 속성을 설정하는 것이 mc를 참조하는 변수의 이름을 지정하는 것과 같지 않기 때문입니다. – JcFx

답변

0

, 첫 번째 조치로, 주위에 "open_info_string"를 따옴표를 제거하고 정상적인 일 "S"에 해당 문자열의 자본 S를 변경합니다. 그것은 한 번에 작동하지 않을 경우 제대로립니다되었는지 여부를 확인하기 위해, 무비 클립에 도달하기 전에

var open_info = stage.getChildByName(open_info_string); 

그런하는 trace(open_info_string);를 삽입합니다.

+0

고맙습니다. "Null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다."는 여전히 작동하지 않았습니다. 그리고 trace()는 내가 원하는 정확히 winterfell_info를줍니다. –

+0

보세요, 질문이 조금 바뀌 었습니다. 지금. 이제 "open_info_string"변수가 "help_info"와 같이 유용한 것으로 설정되었지만 "open_info_string"이라는 무비 클립을 검색 중입니다! 변수가 무엇이고 그렇지 않은 변수가 무엇인지 이해해야합니다. 'stage.getChildByName (open_info_string);이라고 쓰면 그 변수에 포함 된 이름이 WHICH라는 객체가 "open_info_string"이라는 이름으로되어 있지만'stage.getChildByName ("open_info_string");이라고 쓰면 객체를 묻는 것입니다. name이 "open_info_string"과 같은 객체이고 이것은 상수입니다. – Vesper

+0

나는 그것을 이해하고 고쳐주었습니다. 고마워요. 그러나 아직도 그것 doenst 일. –

0

내가 내가 코드를 적응하는 시간이 없어 .. 비슷한 짓을했는지,하지만 당신은 내가 여기에 무슨 짓을했는지를 보면 나는 당신을 도울 것입니다 생각합니다. 비디오 플레이어에있는 객체의 인스턴스 이름으로 배열을 만들고 스위치 케이스 문을 사용하여 적절한 이벤트 리스너를 추가하는 함수를 만들었습니다. 제 의견으로는 이것을 대량으로 수행하는 가장 쉬운 방법입니다.

var buttons:Array = [clicky,pauseBtn,playBtn]; 

for (var i in buttons) 
{ 
    buttons[i].buttonMode = buttons[i].useHandCursor = true; 
    addEventListner(buttons[i]); 
} 

function addEventListner(movieClip) 
{ 
    movieClip.addEventListener(MouseEvent.CLICK, function(e){ 
    e.stopPropagation(); 
    switch (movieClip.name) 
    { 
    case "playBtn" : 
    youTubeHolder.videoPlayer.playVideo(); 
    videoController.playBtn.visible = false; 
    videoController.pauseBtn.visible = true; 
    break; 

    case "pauseBtn" : 
    youTubeHolder.videoPlayer.pauseVideo(); 
    videoController.playBtn.visible = true; 
    videoController.pauseBtn.visible = false; 
    break; 

    case "stopBtn" : 
    youTubeHolder.videoPlayer.seekTo(0); 
    youTubeHolder.videoPlayer.stopVideo(); 

    break; 

    default : 
    trace(movieClip.name+"is not a valid button"); 
    } 


    }); 
} 
관련 문제