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によって作成されました.簡単ですが、非常に有効です.コードは以下の通りです.
もう一つのJavascriptはSwfObjectを使ってSWFファイルを挿入します.HTMLファイルのどこにでも置いてもいいです.まずDIVタグを作成します.適切なFlash Playerがインストールされていない時にユーザーに注意してください.
DIVタグの中に入力したい内容は何でも入力できます.画像の追加やフィードバックの情報は好きなようにSWFファイルに置き換えられます.
次は代替機能を実現するJavascriptです.
インターネットで完全な教程を探しました.示唆と実用性があります.以下のように完全に実現されるステップです.
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ファイルは、 &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; の に して、 の に えます. たちはキャプチャ&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」