2009-06-26 8 views
0

J'ai un développeur Flash avec lequel je travaille. Cette personne construit un outil dans AS2 qui fournira une interface qui enverra des données de vote (prénom, nom, adresse email, votes (il y a 100 articles dans les catégories et les utilisateurs pourront choisir un sous-ensemble pour déclarer "meilleur").Code de communication entre PHP et AS2?

Tout assez juste, dev Flash ne publiera ses données à une application PHP Je vais développer, et je vais stocker les données dans MySQL. Ce dev Flash n'a pas fait beaucoup de travail avec les bases de données ou des applications web.

Je veux retourner les données à l'application Flash Je veux être capable de retourner les messages "adresse email invalide" ou "problème de connexion à la base de données" ou "vote d'information acceptée" Mon instinct est de vouloir renvoyer JSON ou XML Mais je me demande s'il existe des outils dans AS2 pour consommer facilement de telles réponses. Je voudrais voir des exemples de code AS2 "Hello World" qui consomment des données JSON ou XML pour que l'application Flash et l'application PHP interagissent bien. Ma compréhension est que l'AMF n'est pas sur la table parce que c'est AS2, mais je suis ouvert à ce qui fonctionnera aux deux extrémités étant donné la contrainte de l'AS2.

+0

AMF fonctionne très bien avec AS2, il vous suffit de vous assurer que vous utilisez AMF0 plutôt que AMF3. –

+0

pour répondre à votre commentaire ci-dessous: XML est une classe intégrée – back2dos

Répondre

1

Ci-dessous devrait vous donner un exemple.

XML:

<alldots> 
    <dotname id="bigDot" color="0xff0000" url="http://www.fletchermartin.com/" photos="8" /> 
    <dotname id="otherDot" color="0x000066" url="http://www.ajc.com/" photos="8" /> 
    <dotname id="thirdDot" color="0xCC0099" url="http://www.tiffanybbrown.com/" photos="0" /> 
</alldots> 

Code AS2

var dots:XML = new XML(); 
dots.load('bigdot.xml'); 

dots.onLoad = function(success:Boolean){ 
    if(success){ 
     if(dots.status == 0){ 
      var dotsToXMLString:String = new String(); // initializes a new string variable 
      dotsToXMLString = dots.toString();   // converts dots XML object to a string and stores it in dotsToXMLString. 

      var dotsXML:XML = new XML(dotsToXMLString);// creates new XML object with the string contents from above. 
      dotsXML.parseXML(dotsToXMLString);   // parses the string from above. 

      var dotsNodes:Object = dotsXML.firstChild; // Saves the firstChild (in this case, the outermost element) as an object 
      var dotsNodesChildren:Object = dotsNodes.childNodes; // Saves the childNodes of firstChild as an object 

      for(i=0;i<dotsNodesChildren.length;i++){ 
       var newObj:Object = dotsNodes.childNodes[i].attributes.id; // creates a new object out of the child node's id. 

       var newObjColor:Color = new Color(newObj); // creates a new color object with newObj as its target 
       var theColor:Number = dotsNodes.childNodes[i].attributes.color; //retrieves the hex code value (number) of the attribute color 

       newObjColor.setRGB(theColor); // sets the RGB value of newObjColor. 
      } 

     } else { 
      trace("Problem parsing XML."); 
     } 
    } else{ 
     trace("Could not load XML"); 
    } 
} 
+0

Une grande partie du code ci-dessus n'est pas nécessaire. La méthode onLoad analyse automatiquement le XML et le charge. Plutôt que de créer l'objet dotsXML, vous pouvez simplement faire référence à 'this' en interne - puisque ce code fait partie de l'objet XML dots. –

+0

Hélas je ne suis pas un programmeur AS2, mais j'ai trouvé un code snipit pour essayer de l'aider car il n'y avait pas d'autres réponses. Si je devais travailler avec AS2, je trouverais le code ci-dessus (personnellement) un bon point de départ pour aller de l'avant et potentiellement améliorer. J'apprécie cependant votre critique :) c'est comme ça qu'on s'améliore à ce jeu qu'on appelle la programmation :)) –

+0

Pas de soucis! C'est un bon début. Le gros problème est que la classe XML d'AS2s fonctionne trop. Une seule classe ne devrait pas gérer les requêtes HTTP, charger les données sur HTTP, et analyser/traverser XML! Adobe a résolu le problème (et puis certains!) Avec AS3. –

Questions connexes