Forums Développement Multimédia

Aller au contenu

Problème utilisation service PHP dans un module

CODE Actionscript

4 réponses à ce sujet

#1 zuhan

    Ceinture Blanche

  • Members
  • Pip
  • 6 messages

Posté 07 March 2012 - 12:06 PM

Bonjour,

je suis débutant avec flash builder et flex et je suis confronté au problème suivant :

j'ai créé un service php opérationnel et testé ok, quand je lie les données retournées à une datagrid directement dans une application aucun problème. Lorsque je souhaite utiliser le service php au sein d'un module lui même chargé dans une application celà ne fonctionne plus ( le swf du module n'est plus généré je pense ). En lançant en mode debug il apparait l'erreur suivante : "#1014 class mx.messaging.messages.AbstractMessage not found" J'ai à tout hasard inséré un import de cette classe mais rien y fait.

Ce qui me chagrine le plus c'est que je procède de la même manière quand la datagrid est directement dans une application et que dans ce cas là celà fonctionne.....

Quelqu'un aurait une idée? Merci d'avance.

#2 Tonic

    Plop

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5712 messages

Posté 07 March 2012 - 16:47 PM

Salut,

test en déclarant dans ton module une variable de type AbstractMessage :


var maVar : AbstractMessage;
 


Le fait d'importer une classe (import mx.etc.) ne veut pas dire que la classe sera importée à la compilation, il faut explicitement déclarer une variable utilisant cette classe.

Tu peux également passer par les options du compilateur pour forcer l'embed de classe, mais je pense que la 1ere solutions est la plus simple pour toi.

++ ^^

#3 zuhan

    Ceinture Blanche

  • Members
  • Pip
  • 6 messages

Posté 07 March 2012 - 22:45 PM

Merci de m'accorder du temps!!!
J'ai essayé ta solution ca fonctionne pas... Le message d'erreur est le suivant :

VerifyError: Error #1014: La classe mx.messaging.messages::AsyncMessage est introuvable.

at flash.display::MovieClip/nextFrame()
at mx.core::FlexModuleFactory/deferredNextFrame()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:730]
at mx.core::FlexModuleFactory/update()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:503]
at mx.core::FlexModuleFactory/moduleCompleteHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:828]


NB: ca fonctionne correctement avec le sdk 4.0.0 mais pas avec les suivants....

Le code tout simple du module si ca peur aider :


<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="400" height="300" xmlns:produitservice="services.produitservice.*">
<fx:Script>
  <![CDATA[
   import mx.controls.Alert;
   import mx.events.FlexEvent;
   import mx.messaging.messages.AsyncMessage;
   /************* Ajout ***************/
    var mess:AsyncMessage;
   /***********************************/
   protected function dataGrid_creationCompleteHandler(event:FlexEvent):void
   {
    getAllProduitResult.token = produitService.getAllProduit();
   }
 
  ]]>
</fx:Script>
<fx:Declarations>
  <s:CallResponder id="getAllProduitResult"/>
  <produitservice:ProduitService id="produitService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
  <!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). -->
</fx:Declarations>
<mx:DataGrid x="7" y="18" id="dataGrid" creationComplete="dataGrid_creationCompleteHandler(event)" dataProvider="{getAllProduitResult.lastResult}">
  <mx:columns>
   <mx:DataGridColumn headerText="idProd" dataField="idProd"/>
   <mx:DataGridColumn headerText="glucidesProd" dataField="glucidesProd"/>
   <mx:DataGridColumn headerText="poidsMoyenProd" dataField="poidsMoyenProd"/>
   <mx:DataGridColumn headerText="prixUnitaireProd" dataField="prixUnitaireProd"/>
   <mx:DataGridColumn headerText="uniteMesureProd" dataField="uniteMesureProd"/>
   <mx:DataGridColumn headerText="kcalProd" dataField="kcalProd"/>
   <mx:DataGridColumn headerText="protidesProd" dataField="protidesProd"/>
   <mx:DataGridColumn headerText="nomProd" dataField="nomProd"/>
   <mx:DataGridColumn headerText="kjProd" dataField="kjProd"/>
   <mx:DataGridColumn headerText="lipidesProd" dataField="lipidesProd"/>
  </mx:columns>
</mx:DataGrid>

</mx:Module>
 


#4 Tonic

    Plop

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5712 messages

Posté 08 March 2012 - 09:07 AM

Avec quel SDK est compilé le module?
Et l'application qui la charge?

Le module est il "optimisé" pour l'application, ou est t'il générique (option lors de la création du module)?

#5 zuhan

    Ceinture Blanche

  • Members
  • Pip
  • 6 messages

Posté 13 March 2012 - 09:58 AM

J'ai développé le module et l'application sous flash builder 4 au sein du même projet. Lorsque le SDK lié au projet est le 4.6 l'erreur apparait, lorsque je lie le SDK 4.0 à la place tout fonctionne correctement. Pour le moment j'ai donc continué le developpement de l'appli et des ses modules avec le SDK 4.0 mais si jamais vous avez un début de piste je suis toujours preneur. Pour ce qui est de l'optimisation du module, j'ai peur de ne pas tout à fait saisir ce concept, comme je l'ai dit je suis plutôt novice dans le domaine du flex...



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