AS3:Recuperer les variables données par html

Résolu/Fermé
vivou - 3 déc. 2007 à 15:02
 alanee - 31 mai 2010 à 22:09
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
[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 :)
8
Thx pour la réponse !
0
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..
1
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!
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
15 févr. 2009 à 12:42
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
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
16 févr. 2009 à 12:21
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.
0
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!
0
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
-1
alibabba Messages postés 21 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 20 décembre 2009 13
26 avril 2009 à 16:41
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
-1
see this sample
http://blog.flexexamples.com/2007/08/07/grabbing-flashvars-from-the-embedding-html-template/
it's the right one
-2
Profil bloqué
3 déc. 2007 à 15:20
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"
-4