function sendVariables(e:MouseEvent):void {
// 먼저 HTML 문서의 URL을 가져와서 배열로 분할합니다.
var htmlUrl:String = ExternalInterface.call("window.location.href.toString");
// 물음표에서 문자열 분할
var SplitUrl:Array = htmlUrl.split("?")// 사용 첫 번째 부분만(기존 매개변수 제외)
var TrimmedUrl:String = SplitUrl[0]
// URL에 추가할 매개변수 가져오기
var 매개변수:String = VariableToSend.text; 🎜 >// URL과 매개변수를 새로운 물음표로 결합
var requester:URLRequest = new URLRequest(trimmedUrl "?"parameters)
// 페이지 새로고침
navigateToURL(requester, '_self');
}
여기에서는 'ExternalInterface.call'을 사용하여 SWF 파일에 삽입된 HTML 텍스트의 URL을 캡처하는 약간의 트릭을 사용합니다. 플래시 파일은 자신을 가리키는 URL만 알고 있습니다. 이 기술은 이러한 제한을 극복합니다. 외부 인터페이스는 SwfObject에서 기본적으로 켜져 있지만 수동으로 끌 수 있습니다.
현재 URL에는 매개변수가 필요하지 않습니다(예: '...?test=something&id=5'). 그래서 우리는 물음표 앞 부분만 유지하고 나중에 사용할 수 있도록 'trimmedUrl' 변수에 저장했습니다. 'variablesToSend' 텍스트 상자에 매개변수를 캡처하여 URLRequest에 전달합니다. 'navigateToURL'에 요청을 전달하면 브라우저는 HTML 페이지를 다시 로드하고 'variablesReceived' 텍스트 상자에 가장 최근에 제출된 값 쌍을 표시합니다.
참고: Flash에서는 이를 테스트할 수 없습니다. FlashVars와 외부 인터페이스 모두 브라우저에 SWF를 삽입해야 하므로 파일을 서버에 업로드해야 합니다.
마지막으로 addEventListener를 사용하여 보내기 버튼 설정을 위한 'sendVariables' 메서드를 호출해야 합니다.
sendButton.addEventListener(MouseEvent.CLICK,sendVariables); 이제 Javascript를 사용하여 매개변수를 서로 전달하는 방법을 알았습니다. 우리가 배운 것을 활용하여 뭔가 유용한 일을 해보자. 먼저 SWF 타임라인 재생을 중지하고 마우스 클릭에 대한 이벤트 리스너를 설정합니다.
stop();
// 5개 버튼 설정 item1.addEventListener(MouseEvent.CLICK, gotoURL)
item2.addEventListener(MouseEvent.CLICK, gotoURL); (MouseEvent.CLICK, gotoURL);
item4.addEventListener(MouseEvent.CLICK, gotoURL);
item5.addEventListener(MouseEvent.CLICK, gotoURL); . 다음으로, URL에서 매개변수를 캡처합니다.
코드 복사
코드는 다음과 같습니다.
// 변수 가져오기 try { var key:String; var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters; (key in flashvars ) {
val = String(flashvars[key]);
if(key == "item"){ // 매개변수가 'item'이라고 불리는 경우...
if( val.substr( 0,4) == "item"){ // ... 버튼 이름은 'item' 문자로 시작합니다...
// ... 숫자를 추출할 수 있습니다. 항목의 일부 -name 및 올바른 프레임으로 이동
var frameToGoTo:Number = Number( val.substr(4,1) )
gotoAndStop(frameToGoTo 1 )
}
}
}
} catch (error:Error) {
// 오류 발생 시 대처 방법
}
보시다시피 이는 다음과 매우 유사합니다. 우리는 전에 그랬어요. 하지만 이번에 전달하는 매개변수 이름은 'item'입니다. 이 매개변수는 우리가 클릭한 버튼의 이름입니다.
다음은 gotoURL 함수입니다.
코드 복사
코드는 다음과 같습니다.
// 첫 번째 부분만 사용(기존 매개변수 삭제)
var TrimmedUrl:String = SplitUrl[0];
// 클릭한 버튼의 이름을 가져와서 매개변수로 설정합니다.
varparameters:String = "item=" e.currentTarget.name; URL과 매개변수를 새로운 물음표로 결합
var requester:URLRequest = new URLRequest(trimmedUrl "?" 매개변수)
// 페이지 새로고침
navigateToURL(requester, '_self');
'item=' 문자와 클릭한 버튼의 이름을 결합하여 자체 매개변수를 생성합니다. 그런 다음 URL과 매개변수를 NavigateToURL 메소드에 전달하여 새 매개변수로 HTML 페이지를 다시 로드하십시오.
이벤트 작동 방식: 무언가를 클릭하면 addEventListener() 메서드를 사용하여 클릭 이벤트를 수신하며 이벤트에는 클릭된 객체에 대한 참조가 포함됩니다. 'currentTarget' 속성은 클릭된 객체(e.currentTarget)를 참조하므로 e.currentTarget.name을 사용하여 해당 객체의 이름을 얻을 수 있습니다.
전체 메뉴 시스템으로 만들려면 예제와 동일한 URL을 사용하는 대신 새 URL을 로드해야 합니다. 지금쯤이면 기본 사항을 알아야 합니다. 동시에 여러 가지 방법으로 작동할 수 있습니다. URL을 SWF에 변수로 저장하거나 XML 파일에서 로드하는 등 다양한 방법을 사용할 수 있습니다. 그래서 나는 이것들을 당신에게 맡깁니다. 이 튜토리얼을 사용하여 솔루션을 만드는 경우 다른 학습자가 볼 수 있도록 댓글에 URL을 게시하세요.