2011-08-25 9 views
0

나는 다시 플래시에 빠지려고 노력하고있다. 여기에 코드를 쓰려고하지만 ... 글쎄, 보여 드리죠.외부 swfs 간 원활한 전환.

내가 원했던 것은 현재 눌려진 버튼을 기반으로 자산을로드하는 주 swf입니다. 3 개의 외부 SWF가 있습니다 (이 예제에서는 처음로드 된 swf "indexExt.swf"를 호출하고 "f02.swf"파일 2 개, "f03.swf"파일 3 개를 호출 할 수 있습니다). 각 파일에는 하나의 외부 SWF가 있습니다. 프레임 1에서 프레임 10으로 이동하는 레이어입니다.

프레임 1에는 프레임 5에 "소개"레이블이 있고 "아웃트로"레이블이 있고 프레임 10에는 "끝"레이블이 있습니다.

indexExt.swf는 주 swf의 초기로드시로드됩니다.

내 버튼의 경우, 메인 swf 스테이지에서 내 버튼을주었습니다. 외부 swfs와 같은 이름의 인스턴스 이름이 붙어있어서 event.target.name + ".swf" 나는 모든 것을 위해 코드를 다시 작성하지 않고도 그들을 호출 할 수 있습니다. 버튼 등

일반 가져 오기 위해 사용하는 버튼 코드 메신저이 아래와 같습니다 :

f01.addEventListener(MouseEvent.CLICK,btnclick); 
f02.addEventListener(MouseEvent.CLICK,btnclick); 


function btnclick(event:MouseEvent):void{ 

removeChild(loader); 

var newSwfRequest:URLRequest = new URLRequest(event.target.name + ".swf"); 

loader.load(newSwfRequest); 
loader.x = Xpos; 
loader.y = Ypos; 
addChild(loader); 

} 

지금은 데 문제가 타겟팅하는 방법을 모르는 것입니다 클릭 어떤/수입/로드 됨.

전체적으로, 위의 버튼 코드를 다음과 같이 수정하면됩니다.

// non code but you get the idea // 


on press, if something is loaded, go to and play its "outro" frame label. 
if "end frame label" load in event.target.name + ".swf" 

나는 혼란하지 않기를 바랍니다. 본질적으로 내가 원했던 것은 버튼이 눌려 졌을 때, 어떤 영화가로드 되든, outro 레이블을 재생하는지, 그리고 언제, "end"레이블이 맞았는지, 사용자가 클릭 한 내용을로드하는 것입니다.

저는이 방법이 건전한 방법이라고 생각하지만 때로는 가장 어려운 방법을 사용하는 경향이 있습니다. 나는 프로 근처에 있지만 힌트/팁/코드 등은 아니지만 기꺼이 받아 들일 것입니다.

답변

1

완전한 이벤트를 위해 로더 객체에 리스너를 추가해야합니다. 그것은 당신에게 당신이 찾고있는 참조를 줄 것이다. 그런 다음 해당 객체가 설정된 경우 단추를 클릭 할 때 원하는 프레임으로 이동하도록 알릴 수 있습니다.

var loaded:Object; 

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaded); 

function handleLoaded(e:Event):void { 
    loaded = e.target.content; 
} 

btn.addEventListener(MouseEvent.CLICK, handleClick); 

function handleClick(e:MouseEvent):void { 
    if (loaded) { 
    loaded.gotoAndPlay("outro"); 
    } 

    //load new swf 
} 
+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 나는 질문이있다. 설명 할 내용을 이해했지만 두 번째 줄에는 "loaderContentInfo"가 무엇입니까? – somdow

+0

contentLoaderInfo는로드되는 실제 내용에 대한 참조뿐만 아니라로드되는 내용 (예 :로드 된 바이트 및 총 바이트 수)에 대한 정보에 액세스 할 수있게 해주는 Loader 객체에있는 속성입니다. 로더 진행 상황에 따라 이벤트를 전달하는 객체이기도하므로 리스너를 직접 Loader 객체 대신에 추가해야합니다. http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#contentLoaderInfo – HotN

+0

LOL 확인. 내가 참조. 나는 그것을 보지만 플래시에서 "loaderContentInfo"는 코드에 대해 파란색으로 바뀌지 않았다 ... 그래서 변수 또는 somethig라고 생각하거나 언급하는 것을 잊어 버렸습니다. 하지만 지금은 오타였습니다. loaderContentInfo와 contentLoaderInfo를 넣었습니다. 큰 도움이 필요 없습니다. 아 지금 시도해보십시오 – somdow