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.
Configuration: Windows XP
Firefox 2.0.0.11

10 réponses

  1. 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
  2. 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
    1. alanee
       
      Thx pour la réponse !
      0
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jona303 Messages postés 390 Statut Membre 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
  7. jona303 Messages postés 390 Statut Membre 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
    1. 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
  8. 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
  9. alibabba Messages postés 22 Statut Membre 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
  10. samiha
     
    see this sample
    http://blog.flexexamples.com/2007/08/07/grabbing-flashvars-from-the-embedding-html-template/
    it's the right one
    -2
  11. 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