Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1164 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3] Error #1009: Il est impossible d'accéder à la propriété ou à...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[AS3] Error #1009: Il est impossible d'accéder à la propriété ou à...

n°1807145
Mafate79
Posté le 01-11-2008 à 00:08:39  profilanswer
 

Bonsoir à tous,
 
j'ai un problème avec un flash contenant de l'ActionScript 3. Ce Flash fonctionne correctement sous Firefox et IE6, mais malheureusement pas sous IE7.
 
Je résume ce que je cherche à faire : j'ai une page HTML qui contient une carte de France en Flash découpée en régions cliquables. Lorsque le visiteur clique sur une des régions, le navigateur ouvre une nouvelle page HTML à laquelle sont transmises en POST des variables calculées directement dans mon Flash ou récupérées depuis le formulaire HTML via une fonction JavaScript.
 
Tout se passe bien avec Firefox et IE6, mais IE7 me retourne l'erreur suivante lorsque je clique sur l'une des régions de ma carte :
 

Citation :

TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at zzzzPost_fla::MainTimeline/sourisUp()


Cette erreur est apparemment souvent rencontrée au vu du nombre de réponses que renvoie Google, mais malheureusement je ne trouve pas pour autant mon bonheur... Je fais donc appel à vos compétences ! :D Voici mon code :
 
1 - Dans la page HTML pour y insérer le Flash, avec un traitement spécifique pour IE et un second pour les autres navigateurs :
 

Code :
  1. <!--[if IE]>
  2. <object type="application/x-shockwave-flash" data="./flash/zzzzPost.swf" width="350" height="293.8" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="ma_carte">
  3.  <param name="movie" value="./flash/zzzzPost.swf" />
  4.  <param name="wmode" value="transparent" />
  5.  <param name="quality" value="high">
  6.  <p><a href="http://get.adobe.com/fr/flashplayer/">Télécharger gratuitement Adobe Flash Player</a></p>
  7. </object>
  8. <![endif]-->
  9. <!--[if !IE]> <-->
  10. <object class="objet" type="application/x-shockwave-flash" data="./flash/zzzzPost.swf" width="350" height="293.8">
  11.  <param name="movie" value="./flash/zzzzPost.swf" />
  12.  <param name="wmode" value="transparent" />
  13.  <param name="quality" value="high">
  14.  <p><a href="http://get.adobe.com/fr/flashplayer/">Télécharger gratuitement Adobe Flash Player</a></p>
  15. </object>
  16. <!--> <![endif]-->


2 - Dans le Flash lui-même (ActionScript 3) pour rediriger le visiteur vers une nouvelle page lorsqu'il clique sur la carte en Flash :
 

Code :
  1. import flash.net.URLRequest; 
  2. import flash.net.URLVariables; 
  3. import flash.net.URLRequestMethod;
  4. import flash.external.ExternalInterface;
  5. // Evenements déclenchés lorsqu'un clic sur l'objet est relaché.
  6. function sourisUp(evt:MouseEvent)
  7. {
  8. // Récupération du tableau retourné par la fonction JavaScript valeurElements().
  9. var valeurElements:Array;
  10. valeurElements = ExternalInterface.call("valeurElements" );
  11. // Page PHP cible.   
  12. var adresse:URLRequest = new URLRequest("./mapage.php" ); 
  13. // Variables à envoyer.
  14. var variables:URLVariables = new URLVariables(); 
  15. variables.type_entite = typeEntite; 
  16. variables.code_entite = codeEntite; 
  17. variables.type_evenement = valeurElements[0];
  18. variables.date_evenement = valeurElements[1];
  19. // On passe les variables à l'adresse.
  20. adresse.data = variables; 
  21.  
  22. // Méthode d'envoi.  
  23. adresse.method = URLRequestMethod.POST;
  24. // Envoi de l'URL.
  25. navigateToURL(adresse, "_self" );
  26. }


 
En espérant que cela inspire quelqu'un, je ne vois pas ce qui peut avoir une valeur null là-dedans...
 
Merci d'avance !  ;)

mood
Publicité
Posté le 01-11-2008 à 00:08:39  profilanswer
 

n°1807961
Mafate79
Posté le 04-11-2008 à 00:16:07  profilanswer
 

Bonsoir à tous.
 
Je viens de faire plusieurs essais de mon côté pour essayer de trouver pourquoi j'ai ce problème de communication entre JavaScript et ActionScript :
 
1 - Tout d'abord, j'ai supprimé de ma page recherche.php tout le code JavaScript qui n'était pas nécessaire au passage des données du formulaire au Flash. J'ai supprimé notamment tout ce qui touche aux calendriers JQuery. Il n'y est resté en fait que la balise SCRIPT suivante dans le HEAD de ma page, le fichier fonctions.js contenant la fonction valeurElements() utilisée dans mon code ActionScript :
 

Code :
  1. <script type="text/javascript" src="./javascript/fonctions.js"></script>


 
Résultat : erreur #1009 à nouveau, triangle jaune en bas à gauche du navigateur, etc...
 
 
2 - Une précision : j'ai placé dans ma page recherche.php un bouton appelant la fonction valeurElements() comme suit :
 

Code :
  1. <div id="boutonRecherche">
  2. <input type="button" value="Rechercher" onclick="alert(valeurElements()[0]);" />
  3. </div>


 
Résultat : tout se passe bien ! La fonction retourne le résultat escompté, même sous IE7. Un clic à suivre sur la carte en Flash utilisant la même fonction JacaScript dans la même page PHP plante toujours, évidemment...
 
 
3 - Autre test : j'ai créé une nouvelle fonction JavaScript simplifiée retournant un entier à la place d'un tableau :
 

Code :
  1. function valeurElements2()
  2. {
  3. alert('Hello !');
  4. return 999;
  5. }


 
 
J'ai modifié le code ActionScript en conséquence pour utiliser cette fonction JavaScript à la place de la fonction initiale :
 

Code :
  1. // Evenements déclenchés lorsque la souris quitte l'objet.
  2. function sourisOut(evt:MouseEvent)
  3. {
  4. // Effacement du texte quand le bouton n'est plus survolé.
  5. label.htmlText = "";
  6. }
  7. // Evenements déclenchés lorsqu'un clic sur l'objet est relaché.
  8. function sourisUp(evt:MouseEvent)
  9. {
  10. // Récupération du tableau retourné par la fonction JavaScript valeurElements().
  11. var valeurElements:String;
  12. valeurElements = ExternalInterface.call("valeurElements2" );
  13. // Page PHP cible.   
  14. var adresse:URLRequest = new URLRequest("./mapage.php" ); 
  15. // Variables à envoyer.
  16. var variables:URLVariables = new URLVariables(); 
  17. variables.type_entite = typeEntite; 
  18. variables.code_entite = codeEntite; 
  19. variables.type_evenement = valeurElements;
  20. variables.date_evenement = valeurElements;
  21. // On passe les variables à l'adresse.
  22. adresse.data = variables; 
  23.  
  24. // Méthode d'envoi.  
  25. adresse.method = URLRequestMethod.POST;
  26. // Envoi de l'URL.
  27. navigateToURL(adresse, "_self" );
  28. }


 
Résultat : l'appel de la fonction avec le bouton retourne bien 999 comme attendu. Un clic sur la carte Flash appelant la fonction valeurElements2() ne génère plus d'erreur #1009 ni de triangle jaune et la page mapage.php est bien affichée ! Malheureusement, les variables $_POST['type_evenement'] et $_POST['date_evenement'] qui lui sont transmises contiennent null au lieu de 999...
 
Je vais me suicider à coup de pelle à tarte si ça continue !!! [:al zheimer]
 
Cela vous inspire-t-il quelque-chose ?
 
Merci et bonne fin de soirée.  ;)  
 
Mafate


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [AS3] Error #1009: Il est impossible d'accéder à la propriété ou à...

 

Sujets relatifs
Accès impossible à phpmyadminAS3 Evenement qui se déclenche qu'une seule fois
Accéder à une plage définie depuis un formulaireconnexion bdd infomniak impossible
Impossible de se connecter a un extranet (SSL) après 18h30[C++] impossible de compiler id3lib avec g++
Fatal error: Can't use function return value in write context inVBA - accèder au nom de sous-repertoire avec FileSystemeObject
Impossible de lancer un fichier .jar sous vistaImpossible de desinstaller sql server 2000
Plus de sujets relatifs à : [AS3] Error #1009: Il est impossible d'accéder à la propriété ou à...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR