AS3:Recuperer les variables données par html

Résolu
vivou -  
 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

Idden
 
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
numerosix
 
[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
alanee
 
Thx pour la réponse !
0
yakou32
 
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
nixou
 
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   Statut Membre Dernière intervention   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
0
jona303 Messages postés 369 Date d'inscription   Statut Membre Dernière intervention   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.
0
mike
 
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
epoxy
 
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   Statut Membre Dernière intervention   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
-1
samiha
 
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é
 
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