Home >
Web Front-end >
JS Tutorial >
Pay attention to details when passing parameter values to flash swf files using javascript_Basic knowledge
Pay attention to details when passing parameter values to flash swf files using javascript_Basic knowledge
WBOY
Release: 2016-05-16 17:47:05
Original
1329 people have browsed it
Question: How to pass parameters to SWF file using javascript? I found a complete tutorial on the Internet, which is very inspiring and practical. The following are the complete implementation steps: Configuring SwfObject: Swfobject2 is the current detection user Is it the best way to install Flash. It is considered an 'industry standard' and new versions of all Adobe products (Flex 4, Flash CS5) use SwfObject to detect Flash Player. First download, unzip the ZIP file, and copy the swfobject.js file to your web server. It is a good idea to create a root folder named 'js' in the root directory. (So the file location should be http://myserver.com/js/swfobject.js). We will refer to this file in the HTML files we create later. If you want to use the ExpressInstall feature (to provide users with an easy upgrade method), you must copy expressInstall.swf to the same folder. Configuration HTML file : HTML file includes two Javascripts. A parameter used to fetch the URL from. Created by Matt White, this is simple but very effective. The code is as follows:
Place the above code into your HTML in the HEAD tag of the file. You also need to import the SWFObject script, the code is as follows: Another Javascript is inserted using SwfObject SWF file. You can place it anywhere in your HTML file. The first thing we need to do is create a DIV tag that will prompt the user when the appropriate Flash Player is not installed.
You can enter any content you want within the DIV tag. Add images or feedback as you like, as these will be replaced by the SWF file. Next is the Javascript to implement the replacement function:
Note on the second line, we call the Javascript function 'getURLParam', which has been inserted into the HTML file. The name we pass is exactly the parameter name we want to capture from the URL. Create Flash File Next it’s time to create the Flash file. Add a text box to the Stage. Set it to 'Dynamic Text' in the properties panel, and the instance name is 'mytextField'. Click 'Show border around text' to display the border when the text box is selected. To capture the passed parameters, you need to use the following try/catch statement:
try { var key:String; // This will contain the name of the parameter var val:String; // This will contain the value of the parameter var flashvars: Object = LoaderInfo(this.root.loaderInfo).parameters; for (key in flashvars) { val = String(flashvars[key]); mytextField.text = key ": " val; } } catch (error:Error) { // what to do if an error occurs }
File: jsvars_test.fla Upload the file and HTML file to the server together. When running the file, you will see the words 'test:' in the text box. Note: If the SWF cannot be displayed and you only see the words 'Upgrade Flash Player', something is missing on the server. Make sure you have uploaded the SwfObject file (swfobject.js) to http://myserver.com/js/swfobject.js. Also ensure that the SwfObject file and SWF file paths in the HTML file are correct. If you still have problems, check the source files and paths of the examples. Next, try adding the test parameter like this http://www.flashmagazine.com/articlefiles/jsvars/jsvars_test.html?test=something. If everything goes well, you will see 'test:something', Indicates that you have successfully passed the parameters to the Flash file. Go further You can also set parameters from SWF files. In this example http://www.flashmagazine.com/articlefiles/jsvars/jsvars.html?test=something&id=someID we also implement sending parameters. The FLA file contains two text boxes named 'variablesReceived' and 'variablesToSend', as well as a button for sending new parameters. The HTML file for this example is set up to receive two parameters, 'test' and 'id'. First we add some descriptive text to the first text box: variablesReceived.text ="Variables passed in:" " "; Next it’s time to receive the variables:
try { var key:String; var val:String; var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters; for (key in flashvars) { val = String(flashvars[key]); variablesReceived.appendText("t" key ": " val " "); } } catch (error:Error) { variablesReceived.appendText(error.toString()); }
This will be The first text box lists all flashvars. Another main function we use in this file is the send variable function:
// Sending parameters function sendVariables(e:MouseEvent):void { // First we grab the URL of the HTML document and split it into an array var htmlUrl:String = ExternalInterface.call("window.location.href.toString"); // split the string at the questionmark var splitUrl:Array = htmlUrl.split("?"); // use only the first part (ditch existing parameters) var trimmedUrl:String = splitUrl[0]; // get the parameters we want to append to the URL var parameters:String = variablesToSend.text; // combine url and parameters with a new questionmark var requester:URLRequest = new URLRequest(trimmedUrl "?" parameters); // reload the page 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을 게시하세요.
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn