AS3:Recuperer les variables données par html [Résolu/Fermé]

Signaler
-
 alanee -
Bonjour,
Voila je cheche a lancer une application flash nommée exemple.swf d'une page php pour ce j'utilise le code trouvé dans la documentation de adobe :

echo'
<object type="application/x-shockwave-flash" data="/flash/exemple.swf" width="350" height="431">
<param name="play" value="true" />
<param name="movie" value="anim.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="scalemode" value="noborder" />
<param name="flashvars" value="maVar=Salut" />
<p> Texte de remplacement </p>

</object> ';

Jusqu' ici tout va bien mais j'ais un probleme :
je n'arrive pas a recuperer ma variable maVar qui est censée valoir Salut dans mon code en
ActionScript3 , j'avais cru comprendre que celui ci s'obtenait en faisant _root.maVar mais cela ne marche pas, ce serait super sympas si quelq'un pouvait m'aider.Merci a tous ceux qui repondront.

10 réponses

Pour récupérer les flashvar en AS3 on ne passe plus par le root, il faut faire:

loaderInfo.parameters.mavar à l'endroit ou tu veux récupérer ta variable.

Pas besoin de passer par les protocole GET et POST.

Sinon pour mettre tes swf dans une page web proprement utilise swfobject ;)

Idden
20
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

[quote]
Hello ! bon pour recupérer une variable flashVars en AS3 c est simple :

var ma_variable:String = root.loaderInfo.parameters.ma_variable;

ensuite tu utilise "ma_variable" pour ce que tu veux ... voila!
[/quote]

Merci nixou, tu m'evites des arrachages de cheveux :)
Thx pour la réponse !
Bonjour !

J'ai exactement le même problème,
peut-être va-t-on trouver une solution ensemble :o)

Voilà le code AS :
var iris= _root.mainImage;
textResult = iris;

je teste dans un texte dynamique voir ce qui passe. Mais toujours UNDEFINED


Dans le HTML, j'ai ajouté
<param name="flashvars" value="mainImage=mavariable" />
et aussi dans le EMBED
flashvars="mainImage=mavariable"

J'ai essayé de passer en GET en plaçant la variable derrière le swf (movie.swf?mainImage=mavariable)

Mais rien n'y fait..
Hello ! bon pour recupérer une variable flashVars en AS3 c est simple :

var ma_variable:String = root.loaderInfo.parameters.ma_variable;

ensuite tu utilise "ma_variable" pour ce que tu veux ... voila!
Messages postés
369
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2013
28
Salut, bizzarement ca ne fonctionne pas chez moi (ca retourne toujours null)..:(

il me semble pourtant avoir fait le code correctement.
HTML
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload2.macromedia.com/get/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="videoPlayer" align="middle">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="false" />
	 <param name="flashvars" value="vid=2.flv" />

	<param name="movie" value="videoPlayer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" />	<embed src="videoPlayer.swf" quality="high" bgcolor="#000000" width="550" height="400" flashvars="vid=2.flv"
name="videoPlayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="https://get.adobe.com/flashplayer/" />
	</object>


et AS3
vid_ = root.loaderInfo.parameters.vid;

Si quelq'un a une idée
Messages postés
369
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2013
28
Yo,
bon j'ai fini par trouver, pour les prochains qui ont ce souci, le truc c'est qu'il faut mettre un truc genre 'FlashVars','vid=toto.flv', dans le AC_FL_RunContent du javascript aussi.
Hey chuck ;) Merci pour ton aide!!

Dis moi t as pas eu des soucis avec MACs? mon code marche a merveille mais sur mac, tout deconne...


Quelqu un aurait une piste?

meme en appelant le swif depuis le browser par www.monsite.com/monSwif.swf?id=40

incroyable non??

Pour info j utilise le code que tu fourni ci dessus (merci encore d ailleurs )

Encore un peu d'aide serait appreciee! ;) Merci!
effectivement en AS2 pour envoyer une variable vers flash ce que tu a fait est juste mais n'oubli pas de mettre ta flashvar dans le EMBED également.


ensuite sous flash pour recuperer ta valeur tu fais

effectivement _root.maVar
Messages postés
21
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
20 décembre 2009
13
aurait je raté quelque chose ?
car chez moi cela ne fonctionne pas , j'ai 1 anim dans laquelle la variable doit s'afficher et sous firefox et ie rien ne s'affiche je ne comprend pas ou est le problème :
AS3 :
var ma_variable:String =root.loaderInfo.parameters.firstName;
cette variable est associé a une plage texte dans l'anim qui doit afficher la valeur de la chaine.

le code html

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>testvar</title>
<script language="JavaScript" type="text/javascript">
<!--
//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2008 Adobe Systems Incorporated. All rights reserved.
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
function ControlVersion()
{
var version;
var axo;
var e;
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
try {
// version will be set for 7.X or greater players
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version = axo.GetVariable("$version");
} catch (e) {
}
if (!version)
{
try {
// version will be set for 6.X players only
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

// installed player is some revision of 6.0
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
// so we have to be careful.

// default to the first public version
version = "WIN 6,0,21,0";
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
axo.AllowScriptAccess = "always";
// safe to call for 6.0r47 or greater
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 4.X or 5.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = axo.GetVariable("$version");
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 3.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version = "WIN 3,0,18,0";
} catch (e) {
}
}
if (!version)
{
try {
// version will be set for 2.X player
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
version = "WIN 2,0,0,11";
} catch (e) {
version = -1;
}
}

return version;
}
// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
// NS/Opera version >= 3 check for Flash plugin in plugin array
var flashVer = -1;

if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
var descArray = flashDescription.split(" ");
var tempArrayMajor = descArray[2].split(".");
var versionMajor = tempArrayMajor[0];
var versionMinor = tempArrayMajor[1];
var versionRevision = descArray[3];
if (versionRevision == "") {
versionRevision = descArray[4];
}
if (versionRevision[0] == "d") {
versionRevision = versionRevision.substring(1);
} else if (versionRevision[0] == "r") {
versionRevision = versionRevision.substring(1);
if (versionRevision.indexOf("d") > 0) {
versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
}
}
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
}
}
// MSN/WebTV 2.6 supports Flash 4
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
// WebTV 2.5 supports Flash 3
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
// older WebTV supports Flash 2
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
else if ( isIE && isWin && !isOpera ) {
flashVer = ControlVersion();
}
return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
versionStr = GetSwfVer();
if (versionStr == -1 ) {
return false;
} else if (versionStr != 0) {
if(isIE && isWin && !isOpera) {
// Given "WIN 2,0,0,11"
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
tempString = tempArray[1]; // "2,0,0,11"
versionArray = tempString.split(","); // ['2', '0', '0', '11']
} else {
versionArray = versionStr.split(".");
}
var versionMajor = versionArray[0];
var versionMinor = versionArray[1];
var versionRevision = versionArray[2];
// is the major.revision >= requested major.revision AND the minor version >= requested minor
if (versionMajor > parseFloat(reqMajorVer)) {
return true;
} else if (versionMajor == parseFloat(reqMajorVer)) {
if (versionMinor > parseFloat(reqMinorVer))
return true;
else if (versionMinor == parseFloat(reqMinorVer)) {
if (versionRevision >= parseFloat(reqRevision))
return true;
}
}
return false;
}
}
function AC_AddExtension(src, ext)
{
if (src.indexOf('?') != -1)
return src.replace(/\?/, ext+'?');
else
return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs)
{
var str = '';
if (isIE && isWin && !isOpera)
{
str += '<object ';
for (var i in objAttrs)
{
str += i + '="' + objAttrs[i] + '" ';
}
str += '>';
for (var i in params)
{
str += '<param name="' + i + '" value="' + params[i] + '" /> ';
}
str += '</object>';
}
else
{
str += '<embed ';
for (var i in embedAttrs)
{
str += i + '="' + embedAttrs[i] + '" ';
}
str += '> </embed>';
}
document.write(str);
}
function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent(){
var ret =
AC_GetArgs
( arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
, null
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
var ret = new Object();
ret.embedAttrs = new Object();
ret.params = new Object();
ret.objAttrs = new Object();
for (var i=0; i < args.length; i=i+2){
var currArg = args[i].toLowerCase();
switch (currArg){
case "classid":
break;
case "pluginspage":
ret.embedAttrs[args[i]] = args[i+1];
break;
case "src":
case "movie":
args[i+1] = AC_AddExtension(args[i+1], ext);
ret.embedAttrs["src"] = args[i+1];
ret.params[srcParamName] = args[i+1];
break;
case "onafterupdate":
case "onbeforeupdate":
case "onblur":
case "oncellchange":
case "onclick":
case "ondblclick":
case "ondrag":
case "ondragend":
case "ondragenter":
case "ondragleave":
case "ondragover":
case "ondrop":
case "onfinish":
case "onfocus":
case "onhelp":
case "onmousedown":
case "onmouseup":
case "onmouseover":
case "onmousemove":
case "onmouseout":
case "onkeypress":
case "onkeydown":
case "onkeyup":
case "onload":
case "onlosecapture":
case "onpropertychange":
case "onreadystatechange":
case "onrowsdelete":
case "onrowenter":
case "onrowexit":
case "onrowsinserted":
case "onstart":
case "onscroll":
case "onbeforeeditfocus":
case "onactivate":
case "onbeforedeactivate":
case "ondeactivate":
case "type":
case "codebase":
case "id":
ret.objAttrs[args[i]] = args[i+1];
break;
case "width":
case "height":
case "align":
case "vspace":
case "hspace":
case "class":
case "title":
case "accesskey":
case "name":
case "tabindex":
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
break;
default:
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
}
}
ret.objAttrs["classid"] = classid;
if (mimeType) ret.embedAttrs["type"] = mimeType;
return ret;
}
// -->
</script>
</head>
<body bgcolor="#ffffff">
<!--URL utilisées dans l'animation-->
<!--texte utilisé dans l'animation-->
<!--
<p align="center"></p>
-->
<!-- saved from url=(0013)about:internet -->
<script language="JavaScript" type="text/javascript">
AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0',
'width', '550',
'height', '400',
'src', 'testvar',
'quality', 'high',
'pluginspage', 'http://www.adobe.com/go/getflashplayer_fr',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'testvar',
'bgcolor', '#ffffff',
'name', 'testvar',
'menu', 'true',
'allowFullScreen', 'false',
'allowScriptAccess','sameDomain',
'movie', 'testvar',
'salign', ''
'FlashVars','firstName=Nick&lastName=Danger'
); //end AC code
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload2.macromedia.com/get/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="testvar" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="testvar.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /> <param name="flashVars" value="firstName=Nick&lastName=Danger" <embed src="testvar.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="testvar" flashVars="firstName=Nick&lastName=Danger" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="https://get.adobe.com/flashplayer/?loc=fr" />
</object>
</noscript>
</body>
</html>

si quelqu'un pouvait trouver la solution a ce porbléme nébuleu
see this sample
http://blog.flexexamples.com/2007/08/07/grabbing-flashvars-from-the-embedding-html-template/
it's the right one

fau voir dans le Actionscript 3 la méthode d'envoi vers le fichier php,car le fichier .swf et php communique et pour flash,il a classe loadvars(en As2) je ne sait pas encore en As3,pour envoyer ses variables à php.
les methodes :"POST" et "GET"