javascriptはflash swfファイルにパラメータ値を伝達します.詳細に注意してください.

9598 ワード

問題:Javascriptを使ってSWFファイルにパラメータを送るにはどうすればいいですか?
インターネットで完全な教程を探しました.示唆と実用性があります.以下のように完全に実現されるステップです.
SwfObjectを設定:
Swfobject 2は、現在ユーザがFlashをインストールしているかどうかを検出する最適な方法です.これは‘業界標準’と考えられ、Adobeの全製品の新バージョン(Flex 4,Flash CS 5)はSwfObjectを使ってFlash Playerを検出します.
まずダウンロードして、ZIPファイルを解凍して、swfobject.jsファイルをあなたのwebサーバにコピーして、ルートディレクトリの下で'js'というルートフォルダを作成するのはいい考えです.(だからファイルの位置はhttp://myserver.com/js/swfobject.jsこれから作成するHTMLファイルでこのファイルを参考にします.Express Install機能を使用したいならば、express Install.swfを同じフォルダにコピーしてください.
HTMLファイルの設定:
HTMLファイルは二つのJavascriptを含んでいます.一つはウェブサイトからのパラメータをキャプチャするためのものです.これはMatt Whiteによって作成されました.簡単ですが、非常に有効です.コードは以下の通りです.
 
  
<br>/* Get URL Parameter in Javascript. Code from: http://mattwhite.me/11tmr.nsf/D6Plinks/MWHE-695L9Z */ <br>function getURLParam(strParamName){ <br>var strReturn = ""; <br>var strHref = window.location.href; <br>if ( strHref.indexOf("?") > -1 ){ <br>var strQueryString = strHref.substr(strHref.indexOf("?")); <br>var aQueryString = strQueryString.split("&"); <br>for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){ <br>if ( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){ <br>var aParam = aQueryString[iParam].split("="); <br>strReturn = aParam[1]; <br>break; <br>} <br>} <br>} <br>return unescape(strReturn); <br>} <br>
上記のコードをあなたのHTMLファイルのHEADタグに入れます.SFObjectスクリプトを導入する必要があります.コードは以下の通りです.
もう一つのJavascriptはSwfObjectを使ってSWFファイルを挿入します.HTMLファイルのどこにでも置いてもいいです.まずDIVタグを作成します.適切なFlash Playerがインストールされていない時にユーザーに注意してください.

 
  

This content requires Flash Player 9 (or a more recent version).

You need to ugrade your Flash Player



DIVタグの中に入力したい内容は何でも入力できます.画像の追加やフィードバックの情報は好きなようにSWFファイルに置き換えられます.

次は代替機能を実現するJavascriptです.

 
  
<br>var flashvars = { test:getURLParam("test") }; <br>var params = {}; <br>var attributes = {}; <br>swfobject.embedSWF("/articlefiles/jsvars/jsvars.swf", "flashcontent", "550", "400", "9.0.0","", flashvars, params, attributes); <br>

, Javascript 'getURLParam', HTML 。 。
Flash
Flash 。 。 ' ', 'mytextField'。 ' ' 。
try/catch :
 
  
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
}


ファイル:jsvars_test.fla

ファイルをHTMLファイルと にサーバーにアップロードします.ファイルを するとテキストボックスの の&{39;が されます.test:&{39;という が されます.

「SWFが できないなら、あなたは ただけです.」「アップグレードFlash Player& 39」という があります.サーバに か けていると しています.SwfObjectファイル(swfobject.js)を してください.アップロードしましたhttp://myserver.com/js/swfobject.jsを します.HTMLファイルのSwfObjectファイルとSWFファイルのパスが しいことを します. があれば、 のソースファイルとパスを してください.
に、このようにtestパラメータを してみます.http://www.flashmagazine.com/articlefiles/jsvars/jsvars_test.html?test=something. であれば、あなたは& 39;test:somethingn&am 39を してください.あなたが にFlashファイルにパラメータを すことができたことを しています.

もっと

SWFファイルからのパラメータも できます.この ではhttp://www.flashmagazine.com/articlefiles/jsvars/jsvars.html?test=something&id=someIDは も に パラメータを しました.


FLAファイルには、それぞれ& 39と けられた2つのテキストボックスと、 たなパラメータを するためのボタンがあります.この のHTMlファイルは、 &amp;testo&39と、 の2つのパラメータを します.

variables Received.text=& 34;Varables passed in:& 34;+&33751;34;;{34; の :

 
  
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());
}

これは のテキストボックスにすべてのflashvarsを します.このファイルで したもう つの は、 です.

 
  
// 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');
}

ここでは、SWFファイルに されたHTMLテキストをキャプチャするための さなテクニックを して、& 39;External Interface.call&am 39;SwfObject 39を しています.Flashファイルは に けられているURLだけを っています.この はこの を しました.



のアドレスのパラメータは ありません.したがって、 たちは の の だけを して、それを& 39;trimmedUrl&am 39; の に して、 の に えます. たちはキャプチャ&amp;variable 39;テキストボックスのパラメータをURLrequestに します.に されます. した は しいです.



Flashでテストできません.Flash VarsとExternal Interfaceは、ブラウザに される があるので、ファイルをサーバーにアップロードする があります.



に、 は ずaddEventListenerを って、 ボタンの のために び し& 39;sendVarables& 39;メソッドを しなければなりません.

sendButoton.addEvent Listener(Mouse Event.cLICK,sendVarables);Javascriptを ってパラメータを える はもう かりました. んだことを って に つことをしましょう.




のナビゲーションを します.

する に、ミニメニューシステムを します.このシステムは のボタンをハイライトして します. したファイルや をダウンロードして、コードを してみます.

まずSWFの を し、マウスクリックのためにイベントモニターを します.

stop();


「item 1.addEvent Listener」;

item.2 addEvent Listener(Mouse Event.CC.gotoURL)

item 3.addEvent Listener(Mouse Event.Click,gotoURL)

item 4.addEvent Listener(Mouse Event.Click,gotoURL)

item 5.addEvent Listener(Mouse Event.cLICK,gotoURL)、まだボタンが されていると、 らはいずれも& 39;gotoURL&ga 39; を します. いて、URLからのパラメータをキャプチャします.

 
  
// grab variables
try {
var key:String;
var val:String;
var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (key in flashvars) {
val = String(flashvars[key]);
if(key == "item"){ // If the parameter is called 'item'...
if(val.substr(0,4) == "item"){ // ... and the name of the button starts with the characters 'item'...
// ... we can extract the number-part of the item-name and go to the correct frame
var frameToGoTo:Number = Number( val.substr(4,1) );
gotoAndStop( frameToGoTo+1 );
}
}
}
} catch (error:Error) {
// what to do if an error occurs
}

ご の り、これは のやり とよく ていますが、 たちが えたパラメータの は& 39;item&am 39です.このパラメータは たちがクリックしたボタンの です.

はgotoURL です.

 
  
// Get the new page
function gotoURL(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 name of the button clicked and set it as a parameter
var parameters:String = "item="+e.currentTarget.name;
// combine url and parameters with a new questionmark
var requester:URLRequest = new URLRequest(trimmedUrl+"?"+parameters);
// reload the page
navigateToURL(requester, '_self');
}

たちは & 39;item=& 39; とクリックしたボタンの で のパラメータを します.その 、URLとパラメータをnavigateTo URLに して、 たなパラメータを つHTMLページを み みします.



イベントはどのように われていますか?クリックされた にaddEvent Listenerを ってイベントを します.イベントにはクリックされたオブジェクトの が まれています.



なメニューシステムになるには、 のように じアドレスを うのではなく、 しいURLをロードする があります. な は っているはずです. に の で できます.ウェブサイトを としてSWFに し、XMLファイルから み むか、 の で み むことができます.これらをあなたに します.このチュートリアルを ってソリューションを しました.コメントにURLを ってください. の がそれを ることができるようにしてください.
<div class=「clearfix」>
<span id=「artbaot」class=「jbTestPos」