Forums Développement Multimédia

Aller au contenu

glob('') PHP + flashVars + stage.loaderInfo.parameters

CODE Actionscript

3 réponses à ce sujet

#1 Double13

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 90 messages

Posté 27 August 2008 - 14:39 PM

Bonjour,

J'utilise la fonction glob('') en PHP pour récupérer toutes les images dans un dossier spécifique.
Ensuite, avec flashVars, je le passe à flash qui le récupère via stage.loaderInfo.parameters.

Avec les tests côté PHP, le tableau fonctionne bien, je peux checker le contenu du tableau et la liste des images.

Par contre, dans flash, il me récupère un tableau apparemment "Array" mais j'arrive pas à exploiter le contenu.
Ou alors, il me converti mon tableau en string avec pour nom "array"...

Action Script


// RECUPERATION DE FLASHVARS //
var contenuFlashVars:Object = stage.loaderInfo.parameters;
if (contenuFlashVars['contenuIMG']) {
for (var p:* in contenuFlashVars) {
nbsImg_txt.htmlText += contenuFlashVars[p];
}
} else {
nbsImg_txt.htmlText = "Erreur : contenuIMG non défini";
}

Côté PHP, j'ai :
'flashVars', 'contenuIMG=<?php echo $listeImg ?>'

J'ai essayé avec utf8_encode au cas ou mais pareils ---> array.


Si quelqu'un a une idée.



#2 yoxos

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3757 messages

Posté 27 August 2008 - 16:11 PM

salut,

passer des variables via flashvars revient (presque) au même que de passer des variables par l'url, tu ne peux pas passer d'objets complexes, juste des String, pour faire transiter des objets complexes type Array, il faut passer par du remoting (amfphp par exemple) Si tu veux rester avec flashvars il te faudra bricoler pour passer ton array et le transformer en chaîne de paires clé-valeur

//un tableau quelconque
$unTableau =array("index_0", "index_1", "index_2");

//convertit un tableau en chaîne de paires clé/valeur
function arrayToURLvars($a)
{
	//la chaîne à renvoyer
	$s="";
	$nb = sizeof($a);
	
	//on génère la chaîne au format url paires clé/valeur
	for($i=0;$i<$nb;$i++)
	{
		$b = ($i==$nb-1) ? '' : '&';
		$s .= 'id_' . $i . '=' . $a[$i] . $b;
	}
	
	return $s;
}


echo arrayToURLvars($unTableau);
////dans un browser on obtient bien : id_0=index_0&id_1=index_1&id_2=index_2

côté flash:

Action Script

var loader:URLLoader = new URLLoader();
loader.addEventListener (Event.COMPLETE, completeHandler);
var request:URLRequest = new URLRequest("http://localhost/test.php");
loader.load (request);


function completeHandler (event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
var vars:URLVariables = new URLVariables(loader.data);
trace(stringToArray(vars)[1]);//affiche bien "index_0" dans la sortie
}

//transformer la chaîne en tableau
function stringToArray(s:URLVariables):Array
{
var a:Array = new Array();
for (var n in s){
a.push(s[n]);
}
return a;
}

par exemple.

Je présume que ça ne doit pas être trop compliqué à adapter pour les flashVars

#3 Double13

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 90 messages

Posté 27 August 2008 - 16:24 PM

Merci pour ta méthode.

Je venais tout juste de modifier la façon de passer le contenu.

On a un peu fait la même chose d'une certaine façon :
- Conversion du tableau en chaîne de charactères séparé par un ';'.
Puis dans flash le bon vieux : split( ";" ); pour conversion en tableau.

A l'arrivée, tout marche comme il faut.

Je voulais faire un truc simple et pas remettre mon nez dans remoting juste pour ça ^^.

Merci pour ta réponse.


#4 yoxos

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3757 messages

Posté 27 August 2008 - 16:35 PM

Citation (Double13 @ Aug 27 2008, 05:24 PM) Voir le message
Merci pour ta méthode.

Je venais tout juste de modifier la façon de passer le contenu.

On a un peu fait la même chose d'une certaine façon :
- Conversion du tableau en chaîne de charactères séparé par un ';'.
Puis dans flash le bon vieux : split( ";" ); pour conversion en tableau.

A l'arrivée, tout marche comme il faut.

Je voulais faire un truc simple et pas remettre mon nez dans remoting juste pour ça ^^.

Merci pour ta réponse.

c'est l'autre méthode qui passe aussi smile.gif
Tout d'bon icon_wink.gif





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP